我一直试图用dajaxice创建一个最简单的应用程序.我在这里阅读了有关此问题的所有主题,不仅在这里,多次重写所有代码,但仍然看不出问题所在.最有趣的是,这些例子正在起作用(几乎所有):https: //github.com/jorgebastida/django-dajaxice/downloads dajaxice-examples.tar.gz
但在我的项目中我有这个:
Uncaught TypeError: Cannot call method 'sayhello' of undefined
Run Code Online (Sandbox Code Playgroud)
我的工具:
项目结构:
BlocalProject/
templates/
template_1.html
manage.py
BlocalProject/
ajapp/
__init__.py
ajview.py
__init__.py
settings.py
urls.py
views.py
wsgi.py
Run Code Online (Sandbox Code Playgroud)
urls.py:
from django.conf.urls.defaults import *
import settings
from dajaxice.core import dajaxice_autodiscover
dajaxice_autodiscover()
urlpatterns = patterns('',
(r'^%s/' % (settings.DAJAXICE_MEDIA_PREFIX), include('dajaxice.urls')),
(r'^$', 'BlocalProject.views.start_page'),
)
Run Code Online (Sandbox Code Playgroud)
views.py:
from django.shortcuts import render
def start_page(request):
return render(request,'template_1.html')
Run Code Online (Sandbox Code Playgroud)
ajapp.py:
from django.utils import simplejson
from dajaxice.core import dajaxice_functions
def sayhello(request):
return …Run Code Online (Sandbox Code Playgroud) 为解决CSRF问题,我使用Ajax的客户端设置:
$.ajaxSetup({
beforeSend: function(xhr, settings) {
function getCookie(name) {
var cookieValue = null;
if (document.cookie && document.cookie != '') {
var cookies = document.cookie.split(';');
for (var i = 0; i < cookies.length; i++) {
var cookie = jQuery.trim(cookies[i]);
// Does this cookie string begin with the name we want?
if (cookie.substring(0, name.length + 1) == (name + '=')) {
cookieValue = decodeURIComponent(cookie.substring(name.length + 1));
break;
}
}
}
return cookieValue;
}
if (!(/^http:.*/.test(settings.url) || /^https:.*/.test(settings.url))) {
// Only send the …Run Code Online (Sandbox Code Playgroud)