服务器响应:即使我在视图中有数据,也未定义

时间:2013-09-25 20:01:10

标签: python ajax django

我与ajax有这个连接,我在公式结果中放了一个打印,在bash的python中我得到了像这样的选择结果:

 [{"pk": 1, "model": "pagoproveedores.test", "fields": {"just_a_test": "google"}}]

问题是,当我想在模板中显示它时,它会向我发送服务器响应:未定义。看起来我没有从视图中得到响应,我知道我有我需要的数据。

view.py

def ajax(request):
    print 'inside ajax'
    if request.POST.has_key('client_response'):
        print 'inside if'
        x = request.POST['client_response']
        y = test.objects.filter(just_a_test=x)
        formulario = serializers.serialize('json', y)
        return HttpResponse(formulario, mimetype="application/json")
    else:
        return render_to_response('ajaxexample.html', context_instance=RequestContext(request))

Ajax.html

$(document).ready(function () {
    $("#button").click(function () {
        var input_string = $("#forminput").val();
        $.ajax({
            url: "/ajaxexample_json",
            type: "POST",
            dataType: "json",
            data: {
                client_response: input_string,
                csrfmiddlewaretoken: '{{ csrf_token }}'
            },
            success: function (json) {
                $('#result').append('Server Response: ' + json.server_response);
            },
             error: function (xhr, errmsg, err) {
                alert(xhr.status + ": " + xhr.responseText);
            }
        });
        return false;
    });
});

2 个答案:

答案 0 :(得分:0)

相反

return HttpResponse(formulario, mimetype="application/json")

DO

return HttpResponse(formulario, content_type="application/json")

答案 1 :(得分:0)

我使用此代码和相同的视图修复它,;)

$(document).ready(function () {
        $("#button").click(function () {
         var input_string = $("#forminput").val();
        $.ajax({
            url: "/ajaxexample_json",
            type: "POST",
            dataType: "json",
            data: {
                client_response: input_string,
                csrfmiddlewaretoken: '{{ csrf_token }}'
            },

                 success: function (json) {
                var jsonResponse = eval(json);
                $.each(jsonResponse, function(index, element){
                        alert(JSON.stringify(jsonResponse));
                     $('#resultTables').append('<tr><td  align="center">'+jsonResponse[0]["pk"]+'</td> <td align="center">'+jsonResponse[0]["fields"]["nombre_miembro_1"]+'</td> <td align="center"></td></tr>');

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