为noob问题道歉......
您好,如何使用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 main()下面,我有处理程序('/ put_in_datastore',ResultsHandler)
同样,从Python端检索数字的类似代码是什么?如果有人可以同时提供处理程序代码和javascript代码,那就太棒了......
答案 0 :(得分: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
,因为我正在使用Javascript发出POST
请求。您可以执行与GET
请求相同的操作,在这种情况下,您可以使用def get
。