2012-12-10 98 views
1

我试图弄清楚这是否可能。如何使用jQuery提交表单然后重新加载页面

我有一个Form-Foo的页面A带有一个动作在新窗口中禁止。

点击提交后,我想要提交表单并将页面重新加载。

到目前为止,我只能得到一个或另一个工作...任何指针将不胜感激。

除了DudeSolutions解决方案...我想这:

$(document).ready(function() { 
    $('#foo').submit(function() { 
     $.post('bar.asp', $(#foo).serialize(), function(data) { 

       window.location.reload(); 

     }); 

    }); 
}); 

同样的结果...我能得到的形式提交一个新的选项卡中打开...但第-A不重装。

+1

会有一定的帮助,如果你列出你已经尝试过的东西,让其他人知道究竟是不是为你工作 – charlietfl

+0

我认为AJAX是解决你的问题。 –

+0

怎么样将你的动作指向你的表单提交和'setTimeout(“location.reload(true);”,timeoutPeriod);' –

回答

3

如果您打算提交表单并重新加载页面,那将是默认行为,并且只有action属性中的url不正确。如果是这样只需更改URL,不需要阿贾克斯,如果一个新的页面加载无论如何意:

$(function() { 
    $('#Form-Foo').attr('action', 'Page-A url'); 
}); 

或:

$(function() { 
    $('#foo').on('submit', function(e) { 
      e.preventDefault(); 
      setTimeout(function() { 
       window.location.reload(); 
      },0); 
      this.submit(); 
    }); 
}); 

只需排队重装应该足以等到的形式发送重新加载页面,但是由于大多数浏览器在您离开浏览器选项卡时会停止超时,所以在您回到该选项卡之前,它不会真正重新加载,但这应该是不明显的。

+0

第二个版本完美。谢谢。 – Webjedi

-1

这里有一个想法:

<script type="text/javascript"> 
    $("#my_form").submit(function() { 
     $.ajax({ 
     type: "POST", 
     url: "/path/to/post/handler/", 
     data: $("#my_form").serializeArray(), 
     success: function() { 
    top.reload(); 
     } 
     }); 
    return false; 
});</script> 
+0

这就是我一直在尝试的东西。表单提交后,新页面打开并显示预期的结果,但页面A不会重新加载。 – Webjedi

相关问题