只是尝试使用带有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
答案 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)