使用Google App Engine获取远程内容的问题

时间:2011-01-10 22:39:02

标签: python json google-app-engine

这是客户端代码。它正在运行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库,但看起来好像不支持它。

究竟问题出在哪里? :(

1 个答案:

答案 0 :(得分:1)

问题在于你根本没有编码JSON - 你只是将Python字典传递给self.request.out.write,并期望它知道如何处理它。导入django.utils.simplejson,并在字典上调用simplejson.dumps()以将其转换为JSON。