2011-08-25 50 views
2

道歉了前面的noob问题的数据... ...jquery.ajax POST请求获得来自应用程序引擎服务器

你好,我怎么使用jQuery.ajax的AppEngine上的服务器的Python的最终数据吗?我知道如何使用ajax和适当的处理程序将数据发送到服务器,但我想知道是否有人可以告诉我从服务器获取值的ajax请求是什么样的。 (假设我想从数据存储中获取一个数字并在javascript中使用它)。

客户端发送到服务器(使用jquery)

客户端JavaScript:

//jQuery and ajax function loaded. 

<script type="text/javascript"> 
    var data = {"salary":500}; 
    $.ajax({ 
    type: "POST", 
    url: "/resultshandler", 
    data: data 
</script> 

服务器端:

class ResultsHandler(webapp.RequestHandler): 
    def get(self): 
     n = cgi.escape(self.request.get('salary')) 
     e = Engineer(salary = n) 
     e.put() 

和下DEF主():,我有处理程序('/ put_in_datastore',ResultsHandler)

同样,类似的代码retr从Python结束数字?如果有人可以提供处理程序代码和JavaScript代码,那将是非常好的...

+0

为什么在将数据存储到数据存储中之前,使用'cgi'转义值? –

回答

9

这种机制与数据流动方式完全相同。在请求成功完成后,使用ajax调用中的success参数对数据进行操作。这通常称为回调。其他回调存在。有关完整信息,请参阅http://api.jquery.com/jQuery.ajax/

$.ajax({ 
    url: "/resultshandler", 
    type: 'POST', 
    data: data, 
    success: function(data, status){ 
    //check status 
    //do something with data 
    } 
}); 

在Python的最后,你用self.response.write.out(output)返回数据。见下面的例子。

class ResultsHandler(webapp.RequestHandler): 
    def post(self): 
     k = db.Key.from_path('Engineer', the_engineer_id) #will be an integer 
     e = db.get(k) 
     output = {'salary': e.salary} 
     output = json.dumps(output) #json encoding 
     self.response.write.out(output) 

此外,您的网址路由应该看起来像('/resultshandler', ResultsHandler)。我不知道/put_in_datastore从哪里来。

最后,注意def post而不是def get,因为我正在做一个POST要求使用JavaScript。你可以像GET请求那样做,在这种情况下,你会使用def get

+0

嗯......我一直在获取POST http:// localhost:8110/resultshandler 500(内部服务器错误)。我试着做output = {'salary':500},但在成功函数下没有运气和提醒(数据),但没有运气...... – ejang

+0

不要忘记json编码。 Pastebin你的代码,我可能会提供帮助。 –

+0

http://pastebin.com/4W19ZGpC谢谢! – ejang

相关问题