Ajax代码不能发送请求到服务器,但是当我定期向同一个url请求http请求时,它可以工作。我试图将网址字段替换为“http://”网址,仍然无法工作。任何人有想法?jquery函数不能发送Ajax请求到Django服务器
Environment:
django 1.5.4;
python 2.7.4;
jquery 2.0.3;
的test.html
<html>
<head>
<title></title>
<script type='text/javascript' src="http://code.jquery.com/jquery-2.0.3.min.js"></script>
<script type="text/javascript">
$(document).ready(function() {
$("#button").click(function(){
$.ajax({
type : "POST",
url : "{% url 'getlist' %}",
data : {
msg : 'abcd'
},
}).done(function(data){
alert(data.message);
});
});
});
</script>
</head>
<body>
<input id="button" type="button" value="Get message from server!">
{% if resource_list %}
<ul>
{% for resource in resource_list %}
<li><a href="{{ resource.url }}">{{ resource.name }}</a></li>
{% endfor %}
</ul>
{% else %}
<p>No Resources</p>
{% endif %}
</body>
view.py
def getList(request):
print "Reach getLists"
if request.is_ajax():
try:
msg = request.POST['msg']
except:
return HttpResponse(simplejson.dumps({'message':'Error From Server'}))
return HttpResponse(simplejson.dumps({'message':msg}))
else:
return HttpResponse(simplejson.dumps({'message':'Not an ajax request'}))
urls.py
url(r'^test$', views.test),
url(r'^getlist/$', views.getList, name='getlist'),
====================================更新===== ================================ 错误信息
Forbidden (403)
CSRF验证失败。请求中止。 帮助 给出失败的原因: CSRF令牌丢失或不正确。
==============================已解决=============== ===================
解决方案:在JavaScript文件的数据字段中添加“csrfmiddlewaretoken:'{{csrf_token}}”后,它就起作用了。原因是django启用了CSRF保护。
==============================谢谢=============== =====================
感谢@ dkp2442和@Christian Ternus的帮助,特别是@ dkp2442。
你得到什么错误?出现“达到getLists”消息吗?你可以在你的Javascript和/或Django控制台中看到任何东西吗? –
您是否在呈现的模板上查看过源代码以确保“{%url”getlist'%}'正常工作? – dpk2442
@Christian Ternus单击按钮时,“Reach getLists”消息无法显示,但在浏览器的http请求访问时显示。以前,我添加了一个警报来显示错误信息,并且信息是403:undefined。 – user2859885