这是客户端代码。它正在运行Google Gadgets
var params = {};
params[gadgets.io.RequestParameters.CONTENT_TYPE] = gadgets.io.ContentType.JSON;
var url = "http://invplatformtest.appspot.com/getrecent/";
gadgets.io.makeRequest(url, response, params);
响应函数是:
function response(obj)
{
var r = obj.data;
alert(r['name']);
}
在服务器端,发送JSON的python代码是:
class GetRecent(webapp.RequestHandler):
def get(self):
self.response.out.write({'name':'geocities'}) #i know this is where the problem is so how do i encode json in GAE?
它应该发回一个Json编码的字符串 但是当我运行它时,javascript会抛出以下错误:
r is null
alert(r['name']);
如果我只收到TEXT内容而我的服务器发送TEXT一切正常。我在尝试发送JSON时只遇到此问题。问题究竟在哪里?我在AppEngine上以错误的方式编码JSON吗?我尝试使用JSON库,但看起来好像不支持它。
究竟问题出在哪里? :(
答案 0 :(得分:1)
问题在于你根本没有编码JSON - 你只是将Python字典传递给self.request.out.write,并期望它知道如何处理它。导入django.utils.simplejson
,并在字典上调用simplejson.dumps()
以将其转换为JSON。