当Content-Type未设置为“application / json”时,jQuery无法理解JSON响应

时间:2011-02-04 22:58:58

标签: javascript jquery json google-app-engine

Google App Engine服务器正在返回一个JSON字符串以响应POST:

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

这适用于在Google App Engine Launcher中运行的本地开发服务器。正在设置标头,jQuery代码正在正确解析响应。

然而,在生产中,在Google前端(当我部署到生产时),页面正在崩溃,因为jQuery没有正确解析响应。我可以在本地和生产之间找到的唯一区别(它们运行相同的代码)是生产响应,忽略了我尝试将Content-Type设置为" application / json"。

这可能意味着我试图设置非法/非标准的Content-Type。但是,它在本地工作,这就是我如何让我的jQuery理解JSON字符串。

那么,我如何格式化响应以便jQuery知道它的JSON并正确解析?

3 个答案:

答案 0 :(得分:4)

只需将"json"作为dataType参数传递给AJAX调用,并且无论内容类型如何,响应将被视为json:)

答案 1 :(得分:3)

尝试:

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

答案 2 :(得分:0)

这可能看起来很愚蠢,但您可能需要将第一个参数大写为add_header,因此它会"Content-Type"?可能是您的本地服务器对参数感到宽容,而Google服务器只是按原样提交标头。您是否可以检查通过Firebug或WebKit开发人员面板返回的标头,以查看正在发送的响应标头?