Я собираю запрос Ajax с JQuery (1.5) на сайте Django (1.2.5). Я работаю над Dev Server в настоящее время, потому что планирую проводить демонстрации перед полным выпуском продукта.Ajax с JQuery на сервере Django Dev
Код JavaScript-код в шаблоне:
function postTest()
{
$.post("/get_elections", { csrfmiddlewaretoken: $('input[name=csrfmiddlewaretoken]').val() }, alertResult);
}
function alertResult(result)
{
alert(result);
}
Как это называется:
<a href="" onclick='postTest()'>Link</a>
{% csrf_token %}
Вид Ajax:
def get_selections(request):
if request.is_ajax():
if request.method == 'GET':
message = "This is an XHR GET request"
elif request.method == 'POST':
message = "This is an XHR POST request"
# Here we can access the POST data
print request.POST
else:
message = "No XHR"
return HttpResponse(message)
Индекс Вид:
def index(request):
polylist = []
return render_to_response('test.html', {'polylist': polylist},context_instance=RequestContext(request))
привязок:
(r'^gi_prototype/', 'world.views.index'),
(r'^get_selections$', 'world.views.get_selections')
Соответствующие настройки:
APPEND_SLASH = 'false'
MIDDLEWARE_CLASSES = (
'django.middleware.common.CommonMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
)
Когда я нажимаю на "Link" на странице, перезагружается страница и генерируется исключение. Исключение, как в Firebug и в Firefox Консоль ошибок:
Error: uncaught exception: [Exception... "Component returned failure code: 0x80040111 >(NS_ERROR_NOT_AVAILABLE) [nsIXMLHttpRequest.getAllResponseHeaders]" nsresult: "0x80040111 >(NS_ERROR_NOT_AVAILABLE)" location: "JS frame :: http://localhost:8000/site_media/jquery-1.5.js :: anonymous :: line 7207" data: no]
Джанго Dev сервер предоставляет этот вывод (маркер заменен вопросительными знаками мной):
<QueryDict: {u'csrfmiddlewaretoken': [u'??????????????????????????????']}>
[22/Feb/2011 16:31:23] "POST /get_selections HTTP/1.1" 200 27
[22/Feb/2011 16:31:23] "GET /gi_prototype/ HTTP/1.1" 200 970
После нескольких часов поисков, Я начал думать, что это просто ограничение Django Dev Server, но это кажется глупым. Любые другие предложения были бы очень полезными. Заранее спасибо.
Почему не просто '$ ('input [name = csrfmiddlewaretoken]'). Val()'? –
Я просто сделал это первым способом, который пришел на ум. Я не получаю ошибку 403, поэтому я не думаю, что это проблема, но я могу дать ей шанс. – MrOodles
Я отредактировал это сообщение, чтобы оно соответствовало вашему предложению. Тот же результат возникает, но, по крайней мере, на одной строке меньше javascript. ;) – MrOodles