2015-09-01 76 views
0

我有一個Ajax請求,將JSON數據發送到Django視圖,然後將成功消息返回並顯示給用戶。爲什麼在JSON通過Django時未調用Ajax成功?

我面臨的問題是Ajax成功沒有被調用。我從HTTP狀態碼200(「已成功接收JSON」)的Ajax請求的錯誤部分中收到警報,但未附加到結果div。

我的理解是,我可能沒有在Django函數中正確地返回數據以用作HTML,因此它調用了Ajax錯誤。

的jQuery(阿賈克斯):

json_query = JSON.stringify(form_data); 

$.ajax({ 
    url: "/stix_json/", 
    type: "POST", 
    dataType: "html", 
    contentType: "application/json", 

    data: { 
     client_response: json_query, 
     csrfmiddlewaretoken: '{{ csrf_token }}' 
    }, 

    success: function(result){ 
     $('#results').html(result); 
    }, 

    error : function(xhr,errmsg,err) { 
     alert(xhr.status + ": " + xhr.responseText); 
    } 
}); 

Django的Views.py

的URL/stix_json /在views.py process_json調用函數

def process_json(request): 
    if request.POST.has_key('client_response'): 

     x = request.POST['client_response'] 
     # Do something with JSON here 

     success = "Received JSON successfully" 
     return HttpResponse(success) 

    else: 
     return render(request, "stix_form.html") 

我會感謝有人能夠解釋爲什麼會出現這個問題。

回答

0

在JS既然你沒有返回HTML(不是JSON ..),而是文本 更改此dataType: "html",dataType: "json",

success: function(result){ 
    $('#results').html(result['status']); 
}, 

和views.py

import json 
data = {'status':'Received JSON successfully'} 
return HttpResponse(json.dumps(data), content_type="application/json") 
+0

本來我已經有了它返回JSON,我想嘗試並返回HTML /文本,因爲我將在稍後處理JSON。 – Lizzeiy

0

,你應該將dataType"html"更改爲"text"

+0

我認爲我是對的,它看起來像服務器沒有更新我的HTML文件,所以它仍然試圖返回JSON。問題現在出於某種原因,CSRF令牌是「無效的」 – Lizzeiy

相關問題