2012-08-16 168 views
2

我有一個表格自動刷新的提交頁面,我曾嘗試加入:如何停止在表單頁面刷新提交

onSubmit="return false;"的表單元素,但隨後的形式只是停止,當你點擊沒有任何反應提交。

我不介意頁面刷新如此之多,但表單位於頁面底部,並且刷新會將您踢回頂部。所以,我想這個辦法:

<form name='test' method='POST' action="index.php" onSubmit="window.scrollTo(5000,500);">

這個工程的一瞬間但後來別的東西覆蓋它(不知道)

我也使用PHP嘗試:header.location只是爲了得到一個「頭已經發送「錯誤。

有問題的網站可以看到here,表格位於最底部。

我使用的唯一兩個jquery庫,我可以預見到任何衝突都是nicescroll和(更可能)路標,但是我通過它們挖掘了這兩個路徑,並且找不到任何衝突問題。

如果任何人的方式來保持表格的功能,但停止頁面刷新都知道,那是最好不過 感謝

編輯:閱讀下面的答案後,它看起來像我將不得不使用Ajax來實現這一點,我完全沒有Ajax的經驗,所以我會看到如何。

+1

這不是表單提交工作的方式。當您提交表單時,它會通過HTTP請求將數據('表單數據')傳遞到'action'屬性中標識的頁面。期。如果你想讓頁面不「刷新」,你必須使用AJAX。 – Matt 2012-08-16 18:57:05

+0

除非您使用AJAX,否則您將不得不執行新的HTTP請求以將信息發送到服務器。也許我不理解什麼? – thatidiotguy 2012-08-16 18:57:24

+1

使用ajax或給表單一個id並設置操作中的散列。例如:'

'後者仍然會刷新,但將用戶帶回表單。 – Jrod 2012-08-16 19:03:01

回答

8

看來你需要通過的方式AJAX在這種情況下提交。在這種情況下,您可以使用jQuery $.ajax()方法來做到這一點。下面的例子:

HTML

<form name='test' method='POST' action="index.php"> 

jQuery的

$('form[name=test]').submit(function(e) { 
    e.preventDefault(); 
    window.scrollTo(5000,500); 

    // a sample AJAX request 
    $.ajax({ 
    url : this.action, 
    type : this.method, 
    data : $(this).serialize(), 
    success : function(response) { 

    } 
    }); 
}); 

這裏,.preventDefault()是停止頁Refre酒店在表單上提交。

+2

這不會破壞即使使用表單元素的整個目的嗎? – thatidiotguy 2012-08-16 18:58:29

+0

試過jQuery的例子,它仍然不會提交表單,我沒有經驗與Ajax,但它看起來像我必須去那條路線。感謝您的開局 – Keith 2012-08-16 19:09:35

0

如何使用AJAX而不是常規表單提交?

2

爲什麼不將表單提交給隱藏的IFRAME?

<iframe name="myiframe" style="display: none;"></iframe> 
<form name='test' method='POST' action="index.php" target="myiframe"> 
    ... 
</form> 
+0

嘗試了這一點,PHP表單驗證似乎不適用於此方法 – Keith 2012-08-16 19:15:22