簡體   English   中英

如何將javascript的JSON請求發布到Django並接收JSON答案?

[英]How to post JSON request from javascript to Django and receive an JSON answer?

我的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 ==“錯誤”)。

似乎我正在嘗試進行“跨域”通話。 我正在測試本地運行.html文件的過程,試圖調用遠程Django服務器。 將POST目標的路徑更改為相對路徑,並通過Django視圖運行腳本解決了該問題。

謝謝Daniel,Content-Length是我的粗心,我發布的視圖版本與我們在Firebug中看到的視圖版本不同(我認為它正在返回“ {}”-我正在嘗試調試)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM