使用jquery1.7.1和django1.3,我試圖讓通過Ajax POST請求,在一些教程代碼我在web和Django的發佈
$(document).ready(function(){
$("#create").click(create_note);
});
var create_note = function() {
var title = $("#title").val()
var slug = $("#slug").val()
if (title != "" && slug != "") {
var data = { title:title, slug:slug };
console.log('title='+title);
console.log('slug='+slug);
var args = { type:"POST", url:"/create/", data:data, complete:done };
$.ajax(args);
}
else {
// display failure
}
return false;
};
的URL「發現/創建/ 「被映射到Django的觀點
(r'^create/$','notes.views.create_note'),
def create_note(request):
error_msg = u"No POST data sent."
if request.method == "POST":
post = request.POST.copy()
if post.has_key('slug') and post.has_key('title'):
slug = post['slug']
if Note.objects.filter(slug=slug).count() > 0:
error_msg = u"Slug already in use."
else:
title = post['title']
new_note = Note.objects.create(title=title,slug=slug)
return HttpResponseRedirect(new_note.get_absolute_url())
else:
error_msg = u"Insufficient POST data (need 'slug' and 'title'!)"
return HttpResponseServerError(error_msg)
當我點擊提交按鈕,觸發JavaScript函數create_note
,我得到一個403錯誤。必須CSRF問題..
我試圖通過修改現成功能
$(document).ready(function(){
$.ajaxSetup({
data: {csrfmiddlewaretoken: '{{ csrf_token }}' },
});
$("#create").click(create_note);
});
來解決這一點,但它並沒有work..I仍然得到403 error
所以,我試圖修改在ajax
通話
var create_note = function() {
var data = { title:title, slug:slug ,csrfmiddlewaretoken: '{{ csrf_token }}'};
...
var args = { type:"POST", url:"/create/", data:data, complete:done };
$.ajax(args);
};
數據還是它會導致403錯誤..
請告訴我應該做些什麼來糾正這種情況..我看到有關這個的 django doc,但我很困惑如何使用that.Should我複製整個jQuery(document).ajaxSend(...
代碼到我的JavaScript文件..我真的困惑在這裏..
謝謝@ManseUK,我也遇到過這個建議..http://stackoverflow.com/a/5107878/1291096 – damon
@ damon相同的代碼... – ManseUK
?這並沒有真正回答*其中*是爲了放置ajaxSend代碼的問題。只需在html文件中?在記事本上? – bharal