如何从javascript发送JSON请求到Django并收到JSON答案?

时间:2013-05-16 00:15:43

标签: javascript jquery django json post

我的Django观点:

class Main(View):
def post(self, request, *args, **kwargs):
    obj = json.loads(request.raw_post_data)
    //do something with obj
    temp = Entry.objects.all();
    result = []
    for t in temp:
        result.append( (t.key,t.value) );
    return HttpResponse(json.dumps(result), content_type="application/json")

我的javascript:

$.post("http://XXX/", JSON.stringify({}), function(data) {
              alert("OK");
            }, "json");

萤火虫有什么要说的:

POST http://193.0.96.129:8006/ 200 OK
Post Headers
Response headers
Content-Type    application/json
Date    Thu, 16 May 2013 00:00:28 GMT
Server  WSGIServer/0.1 Python/2.7.3
Request headers
Accept  application/json, text/javascript, */*; q=0.01
Accept-Encoding gzip, deflate
Accept-Language pl,en-us;q=0.7,en;q=0.3
Content-Length  2
Content-Type    application/x-www-form-urlencoded; charset=UTF-8
Host    XXX
Origin  null
User-Agent  Mozilla/5.0 (Windows NT 6.1; WOW64; rv:20.0) Gecko/20100101 Firefox/20.0

数据传递到Django,但成功回调不会被调用。 Django服务器返回代码200,但在Firebug中,关于POST的通知是红色的。

我试过$ .post调用的多个变体,没有一个工作。如果我使用$ .ajax调用并指定错误回调

error: function(xhr, textStatus, errorThrown) {
    alert("some error" + xhr.responseText+ " X " + textStatus + " X " + errorThrown);
},

我所知道的是“错误”发生了(xhr.responseText == textStatus ==“error”)。

1 个答案:

答案 0 :(得分:0)

好像我正在尝试进行“跨域”通话。我正在测试在本地运行.html文件,试图调用我的远程Django服务器。将POST目标的路径更改为relative,并通过Django视图运行脚本解决了问题。

谢谢丹尼尔,内容长度的事情是我粗心大意,我发布了不同的视图版本然后我们在Firebug中看到响应(它回来了“{}”我想 - 我试图调试)。