2012-02-13 141 views
0

這個問題非常基本,我幾乎不好意思問這個問題,但它讓我難倒了。我已經寫了一段簡短的代碼片段來解釋它:只提交表格一次;當頁面刷新時不要提交

<form id="MyForm" method="post" enctype="multipart/form-data" > 
    <input type="file" id="get_file" name="get_file" > 
    <input type="submit" name="submitForm" value="Submit" > 
</form> 

<?php 
    if (isset($_POST['submitForm'])) { 
    echo "<script type='text/javascript'>alert('Selected')</script>"; 
} else {  
    echo "<script type='text/javascript'>alert('Not selected')</script>"; 
} 
?> 

當我第一次加載此頁時,警報顯示「未選中」。好。我提交表單並提示「已選」。也不錯。但是當我刷新頁面時,它仍然是「選中」。我不明白爲什麼「IF」聲明允許這種情況發生。我希望我的表單只提交一次數據,而不是在我的用戶執行此操作之前再次執行,而不是每次刷新頁面。

這似乎是noobs問他們什麼時候懶得使用Google的問題,但我看了(這個網站上甚至有一些線索解決了這個問題,但沒有人提出過解)。我已經閱讀過HTML表單,但我仍然不明白。

這是大家都知道的,但我呢?有人能告訴我嗎?謝謝。

編輯:如果有人曾經絆倒這個線程,並需要一個快速和骯髒的修復,這裏是我偶然發現的一個。只需再次按下選擇鍵,輕鬆完成使用jQuery。表單被重新提交,但表單變量全部被清除。也許不是很優雅,但它完美地起作用。

回答

1

當您重新加載頁面時,它將重新提交POST請求,這意味着submitForm=Submit是請求主體的一部分。

您應該使用Post/Redirect/Get模式來避免這種情況。

+0

謝謝Alex。在我的搜索中,我確實看到了這一點,但它似乎並不適用於我,因爲它要求重定向,而我所做的一切都在一個頁面上。我會仔細看看。 – Stanton 2012-02-13 23:08:03

+0

@ user1170140您可以重定向到同一頁面。 – alex 2012-02-13 23:13:03

+0

我重定向到另一個頁面,像這樣'返回Redirect :: route('mypage',array('newmember',$ newmember))',它重定向但不能訪問數據,我也試過這個'return Redirect: :route('mypage') - > with('newmember',$ newmember)' – BlackPearl 2014-05-08 05:08:16