2011-02-04 17 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

相关问题