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