为什么我收到此错误,我认为我有正确的ajax功能,我设置了正确的网址...请,任何帮助都将受到高度赞赏。
<div id='notificationsLoader'>
</div>
<script>
$(document).ready(function(){
$(".notification-toggle").click(function(e){
e.preventDefault();
$.ajax({
type:"POST",
url:"{% url 'get_notifications_ajax' %}",
data: {
csrfmiddlewaretoken: "{{csrf_token}}",
},
success: function(data){
$("#notificationsLoader").html('<h3>notifications</h3>');
$(data.notifications).each(function(){
$("notificationsLoader").append(this + "<br/>")
})
console.log(data.notifications);
},
error: function(rs, e){
console.log(rs);
console.log(e);
}
})
})
})
</script>
在 views.py
中@login_required
def get_notifications_ajax(request):
notification = Notification.objects.get(id=id)
notes =[]
for note in notifications:
notes.append(str(note))
data={
"notifications":notes
}
json_data = json.dumps(data)
return HttpResponse(json_data, content_type='application/json')
并在 urls.py
中urlpatterns += patterns('notifications.views',
url(r'^notifications/$', 'all', name='notifications_all'),
url(r'^notifications/ajax/$', 'get_notifications_ajax', name='get_notifications_ajax'),
url(r'^notifications/(?P<id>\d+)/$', 'read', name='notifications_read'),
)
我已尝试在 settings.py 中更改允许主机但不起作用。我几乎可以肯定代码是正确的,因为我正在遵循一个教程,并且使用此代码教师可以毫无问题地完成它。谢谢,
完整错误
POST http://127.0.0.1:8000/notifications/ajax/ 403(FORBIDDEN)&gt; 错误)发送@jquery.min.js:4m.extend.ajax @jquery.min.js:4(匿名) 函数)@(索引):359m.event.dispatch @jquery.min.js:3r.handle @ jquery.min.js:3
答案 0 :(得分:0)
您的数据正在使用我猜测您尚未设置的csrf_token
上下文变量,您更有可能想使用django模板标记作为令牌
url:"{% url 'get_notifications_ajax' %}",
data: {
csrfmiddlewaretoken: "{% csrf_token %}",
},
除此之外,500错误是服务器错误,在调试和开发时,您应该将DEBUG
设置设置为true,以获得更多信息性错误。