2016-02-25 59 views
3

爲什麼我得到這個錯誤,我想我有正確的ajax函數,我把我的url設置爲正確.. 。任何幫助將不勝感激。POST http://127.0.0.1:8000/notifications/ajax/ 403(FORBIDDEN)//使用ajax + django

<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(禁止)> ERROR)發送@ jquery.min.js:4m.extend.ajax @ jquery.min.js:4(匿名 功能)@(指數):359m.event.dispatch @ jquery.min.js:3r.handle @ jquery.min.js:3

+0

你是否真的需要方法POST,只需參考這個http://stackoverflow.com/a/35340286/5633503,希望這會有所幫助 – Kjjassy

+0

@Kjjassy我認爲是的,不是嗎?我正在關注一個教程,並且該教師也提供了一個以及https://github.com/codingforentrepreneurs/srvup-membership/blob/943b18cd078618ad44f1f2c47d241cedeea4dbfe/src/templates/base.html...even沒有POST同樣的錯誤出現無論如何。 –

+0

@mika你給我一個錯誤的鏈接:) – Kjjassy

回答

0

使用csrf_token上下文變量,我你的數據猜測你沒有設置,更有可能你想使用d詹的令牌

url:"{% url 'get_notifications_ajax' %}", 
    data: { 
    csrfmiddlewaretoken: "{% csrf_token %}", 
    }, 

除此之外模板標籤,500錯誤是服務器錯誤,調試和開發應與DEBUG設置設置爲true,以獲得更多的信息錯誤而這樣做的時候。

+0

謝謝,但現在我得到403(禁止),我認爲是從csrf,我設置我的debug = true在我settings.py –

+0

@mikebraa - 你應該更新你的問題,包括你從錯誤中獲得的信息現在 – Sayse

+0

好的,所以我應該使用csrfmiddlewaretoken:「{%csrf_token%}」通過csrfmiddlewaretoken:「{{csrf_token}}」??因爲我正在做一個django教程(在這裏被困住了),教師正在使用{{csrf_token}} –