Jquery ajax与谷歌app引擎发布方法

时间:2013-10-01 22:40:20

标签: javascript jquery python ajax google-app-engine

只是尝试使用带有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脚本,handler是/ 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”的警告信息,而不是取而代之。 任何帮助将不胜感激,因为我刚刚开始使用AJAX和Jquery withGAE

1 个答案:

答案 0 :(得分:1)

首先,我想你应该通过在.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)