表单提交后的另一个重定向

时间:2015-10-18 04:14:50

标签: jquery

我正在努力实现这个目标: php表单。 jquery formsubmit。提交表单时 - 正在重定向用户 代码:

$( document ).ready(function() {

    $('#submit').click(function(e){ 
    $("form").submit();
    window.location.href = '<?=$http_path?>/usr/checkout_invoice';
    e.preventDefault();
    return false; });

});

它提交代码(当redrect关闭时)或重定向但从未按预期执行两项操作。

我错过了什么????

更新

还好。下面的好伙伴建议使用AJAX。对于那些感兴趣的人来说,这是一个解决方案(有效):

$( document ).ready(function() {

    $('#shipping_ok').bind('click touchstart', function(e){
        e.preventDefault();

        var city =  $('#city').val();
        var province =  $('#province').val();
        var zip =  $('#zip').val();

        $.ajax({    
           type : 'POST',
           url : '<?=$http_path?>/usr/ja.php',
           data: {city : city,province : province,zip : zip},
           success : function(data){
               window.location.href = '<?=$http_path?>/usr/checkout_invoice';
           },
           error : function(XMLHttpRequest, textStatus, errorThrown) { 
               alert ("Error Occured");
           }
        });
        return false; 
   });

});
</script>

1 个答案:

答案 0 :(得分:1)

关于它无效的原因。

表单提交是回发到服务器,他们将重新加载页面...(通常是相同的URL)

由于javascript与页面绑定,当您提交表单时,会向服务器发出请求,并返回响应。

此时,它开始用新的响应页面替换当前页面。

新的回复页面对之前发生的事情一无所知。

这会重新加载javascript并有效地清除任何javascript, 正在执行或将要在页面上执行。

所以...

$("form").submit();
//page is reloaded from server... loosing content of any javascript.

//anything below wont happen
---------------------
//window.location.href = '<?=$http_path?>/usr/checkout_invoice';

javascript窗口位置不会发生...正在重新加载页面,重新加载时,     它不知道该页面是在javascript函数中...所以重定向不会发生。