0
我试图实现一个ajax函数,该函数将根据下拉选择的id值执行数据库查询。尽管有以下文档,CSRF验证失败
下拉列表的HTML是
<form method = "POST" action="" >{% csrf_token %}
<select name = "parentorgs" id = "parentorgs">
{% for org in parentorg_list %}
<option value = "{{org.parentorg}}" id = "{{org.parentorg}}" >{{ org.parentorgname }}</option>
{% endfor %}
</select>
</form>
甲jQuery的change()
函数用于获得所述选择的ID,并将其传递到
function getData(id) {
$.ajax({
type : "POST",
url : "getData/",
data : {"parentorg" : id},
datatype: "json",
success : function(data) {
console.log(data)
}
});
}
后者又调用视图函数
from django.shortcuts import render_to_response, render
from django.core.context_processors import csrf
def getData(request):
c = {}
c.update(csrf(request))
return render_to_response("app/index.html", c)
Firebug显示请求正在通过POST ,并且方法URL有效。此外,此方法的网址已添加到urls.py.
在这个时候,它没有做任何事情,因为我只是想看到方法的反应。此方法旨在执行模型查询并返回结果。
每次在下拉列表中选择一个项目时,都会出现错误403,说明该视图使用ResponseContext而不是模板的Context。
需要做些什么来解决这个问题?
如果你把你的代码'打印request.POST'会发生什么? –
@VictorCastilloTorres,我得到'[19/Jun/2013 21:28:11]“POST/app/getData/HTTP/1.1”403 2294',当它应该是'parentorg:28' – Jason
你有js代码在您的Ajax查询上设置标题? https://docs.djangoproject.com/en/dev/ref/contrib/csrf/#ajax –