2015-08-28 38 views
0

這些是用於使用ajax發送json數據的代碼片段。 你可以在最後的帖子中顯示相同的代碼。 我只是按照代碼。 但我得到403錯誤403在使用ajax發送JSON數據時發生禁止的錯誤

jsonpost.html

<!DOCTYPE html> 
<html> 
<head> 
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 
<script> 
$(document).ready(function(){ 
    $("#mySelect").change(function(){ 
     selected = $("#mySelect option:selected").text() 
     $.ajax({ 
      type: 'POST', 
      dataType: 'json', 
      contentType: 'application/json; charset=utf-8', 
      url: '/test/jsontest/', 
      data: { 
        'fruit': selected, 
        'csrfmiddlewaretoken': '{{ csrf_token }}' 
        }, 
      success: function(result) { 
        document.write(result) 
        } 
    }); 
    }); 
}); 
</script> 
</head> 
<body> 

<form> 
    {% csrf_token %} 
    {{ data }} 
    <br> 
Select your favorite fruit: 
<select id="mySelect"> 
    <option value="apple" selected >Select fruit</option> 
    <option value="apple">Apple</option> 
    <option value="orange">Orange</option> 
    <option value="pineapple">Pineapple</option> 
    <option value="banana">Banana</option> 
</select> 
</form> 
</body> 
</html> 

urls.py

urlpatterns = patterns('', 
    url(r'^jsontest/$', views.JsonRead.as_view(), name='userTest'), 
) 

views.py

class JsonRead(View): 
    def get(self,request): 
     return render(request, 'MW_Etc/jsonpost.html') 

    def post(self,request): 
     print(request.body) 
     data = request.body 
     return HttpResponse(json.dumps(data)) 

變化果實值後,我得到了錯誤。 我該如何解決這個問題? 其他任何好方法也不錯。

enter image description here

+0

什麼是完整錯誤?您似乎正在做一個沒有csrf標記的post請求。 – Sayse

+0

@Sayse這裏是完整的錯誤。 POST HTTP://本地主機:8000 /測試/ jsontest/403(禁止) m.ajaxTransport.send @ jquery.min.js:4 m.extend.ajax @ jquery.min.js:4 (匿名函數)@(index):9 m.event.dispatch @ jquery.min.js:3 m.event.add.r.handle @ jquery.min.js:3 – eachone

+0

使用[edit](http:/ /stackoverflow.com/posts/32267337/edit)在你的問題下的按鈕來更新它的新信息。 – Sayse

回答

0

如果使用POST方法你必須發送CSRF令牌的形式,同樣已經在阿賈克斯

$(document).ready(function(){ 
    $("#mySelect").change(function(){ 
     selected = $("#mySelect option:selected").text() 
     $.ajax({ 
      type: 'POST', 
      dataType: 'json', 
      contentType: 'application/json; charset=utf-8', 
      url: '/test/jsontest/', 
      data: { 
        'fruit': selected, 
        csrfmiddlewaretoken: '{{ csrf_token }}' 
        }, 
      success: function(result) { 
        document.write(result) 
        } 
    }); 
    }); 
}); 

的情況下進行嘗試這樣的,這個工作對我來說。

+0

我收到了一條新消息。 Uncaught ReferenceError:qvgZZDSkIVlnsKFZB2HV6BYPgrpPkIx3 is not defined(anonymous function)@(index):16m.event.dispatch @ jquery.min.js:3m.event.add.r.handle @ jquery.min.js:3 – eachone

+0

@Zeamous I have一些改變你的建議。喜歡這個。 'fruit':選中'csrfmiddlewaretoken':'{{csrf_token}}'。但結果相同 – eachone

+1

我已經重新編輯了我的代碼,發現有錯誤,應該是csrfmiddlewaretoken:'{{csrf_token}}' – Zealous