我使用GAE webapp2我有一个使用jquery验证的表单,然后使用jquery发布数据,并且在有效日期的响应中我试图做
self.redirect("/thankyou")
它不起作用,但它实际上在终端中显示post方法已完成,并且类Thankyou
的get方法也已完成。页面永远不会改变。
查询文件可以阻止来自服务器的响应吗?或者我做错了什么? 我怀疑它与jquery有关的原因是因为我在另一个没有使用jquery验证的表单上有几乎相同的代码,并且重定向工作得很好。
这是我的jquery代码。
//validation code on multiple fileds
$("#booking_form").validate();
//adding rules to validation
$("#pax_name").rules("add", {
minlength: 2
});
$("#pax_mobile").rules("add", {
minlength: 10
});
return false;
});
$("#booking_form").validate({
debug: false,
submitHandler: function (form) {
// do other stuff for a valid form
$.post('/booking', $("#booking_form").serialize(), function (data) {
Recaptcha.reload();
});
}
});
谢谢。
答案 0 :(得分:2)
由于您正在向将异步触发的服务器发出AJAX请求,因此您无法从服务器重定向。您需要根据服务器发送的响应等待响应并在客户端上重定向。
请查看此链接,该链接显示如何处理来自服务器的ajax重定向。
答案 1 :(得分:2)
您必须在Javascript中处理重定向。我希望以下内容能解决您的问题:
$("#booking_form").validate({
debug: false,
submitHandler: function (form) {
// do other stuff for a valid form
$.ajax({
type: "POST",
url: '/booking',
data: $("#booking_form").serialize(),
dataType: "json",
success: function(data) {
if (data.redirect) {
// You can here redirect the user to the new page
window.location.href = data.redirect;
}
}
});
}
});