【发布时间】:2019-05-29 21:48:51
【问题描述】:
我的表单是这样创建的
<form class="k-form" id="k_form" novalidate="novalidate">{% csrf_token %}
并稍后在 html 中关闭。
这是我的 AJAX 帖子:
$('#submit').on("click",function(e){
var ready_to_submit = true;
if(ready_to_submit){
e.preventDefault();
var local_data = new Object();
local_data.csrfmiddlewaretoken = $('input[name=csrfmiddlewaretoken]').val();
console.log(local_data.csrfmiddlewaretoken);
var json_data = JSON.stringify(local_data);
console.log(json_data);
$.ajax({
type:'POST',
url:'/create_new_group/create_group/',
data:json_data ,
success:function(data){
if(data.status == 1){
//success!
console.log('Success!')
}
else if(data.status == 2){
//failed
console.log('Failed!')
}
}
});
}
});
这将返回 Forbidden(CSRF 令牌丢失或不正确。):/create_new_group/create_group/ 在我的 Django 服务器上。我做错了什么?
【问题讨论】:
-
当您在浏览器开发者工具网络选项卡中检查请求时,它是否以服务器预期的格式发送正确的数据?
-
你登录了吗?如果不是 csrf 令牌将不可用。如果此令牌存在,请检查您的 cookie。
-
尝试在
data选项中使用$("#k_form").serializeArray()而不是json_data变量。它将序列化表单内的所有内容,包括 csrf 令牌。 -
当我像这样传递数据时它工作正常:{ csrfmiddlewaretoken:$('input[name=csrfmiddlewaretoken]').val(),} 但我想让数据是动态的。所以我不知道出了什么问题。
标签: javascript html django csrf