jquery.ajax发布从app引擎服务器获取数据的请求

eja*_*ang 2 python ajax jquery google-app-engine

为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>
Run Code Online (Sandbox Code Playgroud)

服务器端:

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

在def main():下,我有处理程序('/ put_in_datastore',ResultsHandler)

再次,从Python端检索数字的类似代码是什么?如果有人可以提供处理程序代码和javascript代码,这将是伟大的...

Ste*_*pen 9

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

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

在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)
Run Code Online (Sandbox Code Playgroud)

此外,您的网址路由应该是这样的('/resultshandler', ResultsHandler).我不知道/put_in_datastore从哪里来的.

最后,请注意def post而不是def get因为我正在POST使用Javascript 发出请求.您可以像GET请求一样执行相同的操作,在这种情况下您可以使用def get.