我不明白为什么Redirect()不起作用

时间:2014-03-15 09:47:37

标签: javascript jquery google-app-engine webapp2

我使用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();
        });
    }
});

谢谢。

2 个答案:

答案 0 :(得分:2)

由于您正在向将异步触发的服务器发出AJAX请求,因此您无法从服务器重定向。您需要根据服务器发送的响应等待响应并在客户端上重定向。

请查看此链接,该链接显示如何处理来自服务器的ajax重定向。

How to manage a redirect request after a jQuery Ajax call

答案 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;
                }
            }
        });
    }
});