2012-12-10 93 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

相關問題