为什么在JSON通过Django时没有调用Ajax成功?

时间:2015-09-01 04:43:04

标签: jquery ajax django

我有一个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")

如果有人能够解释为什么会出现这个问题,我将不胜感激。

2 个答案:

答案 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"