2013-07-20 115 views
0

我使用Invision電源板N I增加了管理控制面板的小插件。在這個插件是爲了改變我在數據庫中添加的一些值。當我submited形式一切OK,但是當我用F5重新加載所有頁面,表單再次submited。如何防止重複形式的瀏覽器提交刷新

有我的代碼

<form method="post" id='xp_form' name='xp_form' enctype="multipart/form-data" action="" style='margin: 5px;'> 
        <label style='font-weight: bold;'>New value</label> 
        <p style='margin-top: 3px;'> 
         <input size="5" maxlength="7" name="xpValue" value="" tabindex="1" style='width: 98%; border-radius: 7px;'> 
        </p> 
        <fieldset style='text-align: center;border-top: 1px solid #ccc;margin-top:5px;'> 
         <input value='Cancel' name='xn_value' onclick='closeEdit()' type='button' style='padding: 4px;cursor: pointer;-webkit-border-radius: 4px; border-radius: 4px;border-color: #2b2b2b;'> &nbsp; 
         <input value=' Save ' type='button' onclick='return testPost()' style='padding: 4px;cursor: pointer;-webkit-border-radius: 4px; border-radius: 4px;border-color: #2b2b2b;'> 
         </fieldset> 
       </form> 

和形式submiting

document.forms["xp_form"].submit(); //first submit 
         document.forms["xp_form"].reset(); //and then reset the form values 

我不能重定向到另一個頁面或禁用提交按鈕的JavaScript代碼。讓我解釋。我使用cms。爲儀表板我添加了插件 - >image。當管理員選擇行並用鉛筆圖標顯示彈出窗口時單擊該按鈕。在這個窗口管理員可以編輯值,然後保存值,然後編輯其他記錄

+0

如果貼在表格並嘗試刷新頁面,瀏覽器應該顯示的形式再次提交確認,那麼,爲什麼這是一個問題? – Stefan

回答

0

重定向到一個非提交頁面是做最簡單的方法之一。

0

如果您無論如何使用JavaScript,您可以禁用「提交」按鈕,然後做一個AJAX發送到服務器。如果請求失敗,您可以再次啓用按鈕,如果成功,您可以在不啓用按鈕的情況下重定向用戶。

的SECEND選擇是編寫服務器代碼的方式,當數據後你來處理表單,併發送重定向到用戶對於不支持後另一頁(如「感謝您」頁面)。

+0

我無法重定向到其他頁面或禁用提交按鈕。讓我解釋。我使用cms。爲儀表板我添加插件 - >圖片[鏈接] http://ecogis.comyr.com/2013-07-20_1043.png。當管理員選擇行並用鉛筆圖標顯示彈出窗口時單擊該按鈕。在這個窗口管理員可編輯的值,然後保存值,然後編輯其他記錄 – Alexander

+0

如果你不能改變服務器代碼(重定向),並且不能更改客戶端代碼(在瀏覽器的javascript禁用按鈕) - 我不知道是什麼否則可以完成。 – spinus

-1

這就是我的做法,它工作得很好。我將數據提交給服務器端處理程序,比如temp.php(更改爲您的處理程序)。 Handler在會話中存儲$ _POST或$ _GET變量。我相信每個服務器端技術都有一些會話處理。然後立即重定向到頁面提交後您希望用戶所在的頁面(在PHP中,這是使用header()調用完成的)。這通過刷新解決了多個提交。

如果您不希望用戶被重定向到另一個網頁,使用Ajax和禁止做/啓用提交按鈕,清除表單域提交後。

+0

他已經明確表示他不能重定向到另一個頁面,也不能禁用提交按鈕。 – Stefan

+0

爲什麼不能提交按鈕被禁用?那會有什麼危害?當然,如果頁面重定向不是一個需要考慮的事情,這是唯一的方法。 – Rajesh

+0

或者更好的使用blockui。js阻止整個頁面或者整個頁面,直到ajax完成。在ajax的成功/完成回調中解除封鎖。 – Rajesh

0

如果你有機會獲得代碼處理張貼的值,可以允許再次提交,但如果它是不是貼於前值的不同僅更新數據庫值。

要做到這一點,你需要記住以前的值,比如用它每次存儲的值會話或餅乾或者一個隱藏的輸入(或者使用MD5(值)),這是公佈。在處理過程中,您可以將收到的值與先前記住的值進行比較,如果這些值不同,則只調用數據庫更新代碼。

相關問題