2011-01-10 3 views
0

Вот код на стороне клиента. Он работает insdide вПроблемы с получением удаленного содержимого с помощью Google App Engine

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); 

Функция отклика Google Gadgets является:

function response(obj) 
    { 
    var r = obj.data; 
    alert(r['name']); 
    } 

в то время как на стороне сервера, питон код отправки JSON является:

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. Где именно проблема? Я кодирую JSON неправильно на AppEngine? Я попытался использовать библиотеку JSON, но похоже, что это не поддерживается.

В чем проблема? :(

ответ

1

Проблема в том, что вы совсем не кодируете JSON - вы просто передаете словарь Python в self.request.out.write и ожидаете, что он узнает, что с ним делать. Импорт django.utils.simplejson, и позвоните simplejson.dumps() в словаре, чтобы преобразовать его в JSON.

+0

true ... попробовал родную библиотеку json pythons, но, видимо, это не сработало ... спасибо, что указали на простой jjjo – dade