繁体   English   中英

jQuery Ajax与Google App Engine发布方法

[英]Jquery ajax with google app engine post method

只是尝试通过appengine学习ajax,从post方法开始,但是它不起作用。 这是我的页面HTML代码

    <html>
    <head>
    <title> Hello </title>
<script  src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js">
</script>
<script>
var data={"name":"Hola"};
$(document).ready(function(){
$('#subbut').click(function(){
$.ajax({

 url: '/test',
 type: 'POST',
 data: data,
 success: function(data,status){

    alert("Data" + data +"status"+status);
  }
 });
 });
 });
 </script>
 </head>
 <body>
 <form method="post" action="/test">
 <input type="submit" id="subbut">
 </form>
 <div id="success"> </div>
 </body>
 </html>

这是我的python代码呈现上述html代码,其处理程序为/ test1

from main import *

class TestH1(Handler):
      def get(self):
              self.render('tester.html')

这是AJAX请求必须发送到的python脚本,处理程序是/ test。

    from main import * 
    import json
    class TestH(Handler):
        def post(self):
             t=self.request.get('name')
             output={'name':t+" duck"}
             output=json.dumps(output)
             self.response.out.write(output)

预期的行为是,当我单击“提交”按钮时,我收到一条警告消息“ Hola duck”,却什么也没得到。 任何帮助将不胜感激,因为我只是从GAE开始使用AJAX和Jquery

首先,我想您应该通过在.click函数中添加“ return false”来抑制按提交按钮时表单提交的默认行为。 但我想最好只使用

<input type="button" id="subbut"> 

相反(即使没有形式)。

然后,您应该在您的ajax调用中添加“ dataType:'json'”,以告诉jQuery您希望服务器提供哪种数据类型。 这样做,您将可以通过属性名称(例如“ data.name”)获取响应数据。 所以:

var data={"name":"Hola"};
$(document).ready(function(){
    $('#subbut').click(function(){
        $.ajax({
            url: '/test',
            type: 'POST',
            data: data,
            dataType: 'json',
            success: function(data,status){
                alert(data.name);
                alert("Data" + data +"status"+status);
            }
       });
       return false;
    });
});

如果为响应设置适当的内容类型标头会更好:

response.headers = {'Content-Type': 'application/json; charset=utf-8'}
self.response.out.write(output)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM