2011-02-04 53 views
2

的谷歌應用程序引擎服務器響應POST返回一個JSON字符串:jQuery的不明白JSON迴應時,未設置內容類型爲「application/JSON」

self.response.headers.add_header("Content-Type", "application/json")  
return self.response.out.write(json_string) 

這個工作對我的地方發展服務器在Google App Engine啓動器中運行。頭文件正在設置中,jQuery代碼正確解析了響應。

但是,在生產中,在Google Frontend(當我部署到生產環境中)時,由於jQuery沒有正確解析響應,因此頁面被打破。我可以在本地和生產(它們運行相同的代碼)之間找到的唯一區別是對生產的響應,忽略了我將Content-Type設置爲「application/json」的嘗試。

所以這可能意味着我試圖設置一個非法/非標準的Content-Type。但是,它在本地工作,這就是我讓我的jQuery瞭解JSON字符串。

那麼,如何格式化響應,以便jQuery知道它是JSON並正確解析?

+0

有App Engine的響應中沒有「非法內容類型」。你怎麼確定它沒有設置正確的內容類型? – 2011-02-06 23:40:16

回答

4

"json"只是通過爲dataType參數AJAX調用,和急,響應將被視爲JSON不管內容類型:)

+0

我該怎麼做? – 2011-02-04 23:54:22

0

這可能看起來很愚蠢,但也許你需要把第一個參數大寫爲add_header,那麼它會是"Content-Type"?這可能是因爲你的本地服務器原諒了參數,而Google服務器只是按原樣提交標題。你可以檢查通過Firebug或WebKit開發人員面板返回的頭文件,查看正在發送什麼響應頭文件?

+0

值得一試,但沒有骰子。更新後的帖子以反映大寫。 – 2011-02-04 23:09:53

3

嘗試用:

self.response.headers['Content-Type'] = "application/json" 
self.response.out.write(json_string) 
+1

這就是我正在使用的,它適用於我。只需通過Chrome的開發人員工具進行驗證 – 2011-02-05 00:21:23

相關問題