这个问题搞得我好苦恼,网上查了一大堆答案,结果没有能解决的(可能是因为我的代码错了)。希望大家能帮我解答这个问题。问题描述如下:
一开始写js,我是这样天真的写的。
function getModifiedDistrict(id,name){
district_id= id;
district_name= name;
$(".col-md-9").empty();
var str=" <form action='' method='post' class='form-horizontal'>"+
"{% csrf_token %}"+
" <div class='form-group'>"+
" <label for='areaname' class='control-label col-md-2'>校区名</label>"+
" <div class='col-md-4'>"+
" <input type='text' value='"+district_name+"' autofocus='autofocus' class='form-control' id='modifyDistrict'/>"+
" </div>"+
" </div>"+
" <div class='form-group col-md-2'>"+
" <input type='submit' style='margin-left: 329px;' class='btn btn-primary' value='保存修改'>"+
"</div>"+
"</form>";
$(".col-md-9").append(str);
}
结果,当然就是错了。网页把"{% csrf_token %}"当作一个要显示在网页上的字符来处理了,而且没有达到POST的功能。后来改用ajax,如下:
function getModifiedDistrict(id,name){
district_id= id;
district_name= name;
$(".col-md-9").empty();
var str=" <form action='' method='post' class='form-horizontal'>"+
" <div class='form-group'>"+
" <label for='areaname' class='control-label col-md-2'>校区名</label>"+
" <div class='col-md-4'>"+
" <input type='text' value='"+district_name+"' autofocus='autofocus' class='form-control' id='modifyDistrict'/>"+
" </div>"+
" </div>"+
" <div class='form-group col-md-2'>"+
" <input type='submit' style='margin-left: 329px;' class='btn btn-primary' onclick= modifyDistrict(district_id, district_name) value='保存修改'>"+
"</div>"+
"</form>";
$(".col-md-9").append(str);}
function modifyDistrict(id, name){
district_id= id;
district_name= name;
$.ajaxSend({
url:'setupAjax/updateDistrictActionAjax.action',
type:'post',
dataType:'json',
data:{"district_id":district_id,"district_name":$("#modifyDistrict").val()},
success:function(result){
if(result.result=='success')
alert('修改成功!');
else alert('修改失败!'+ result.errorMsg);
$(".tab-pane").empty();
getModifiedDistrict();
},
error:function(){
alert('服务器错误');
}
});
}
接下来就出现了重要的问题:因为用了POST,而且无法像模板那样加"{% csrf_token %}",所以出现:Forbidden (403) CSRF verification failed. Request aborted。
据说是有办法在ajax里面处理csrftoken的,但是究竟该怎么解决呢?希望大家能够针对我的代码进行解答,谢谢~~~这个问题搞得我真的很苦恼。