我有一个Ajax请求,它将JSON数据发送到Django视图,然后返回成功消息并显示给用户。
我面临的问题是没有调用Ajax成功。我从Ajax请求的错误部分获得HTTP状态代码200的警报("成功收到JSON")但它没有附加到结果div。
我的理解是,我可能没有在Django函数中正确返回数据以用作HTML,因此它调用Ajax错误的原因。
jQuery(Ajax):
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 :(得分:0)
在js
将此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")
答案 1 :(得分:0)
由于您没有返回HTML(不是JSON ..)而是返回文字,因此您应该将dataType
从"html"
更改为"text"
。