我有一個HTML表單,其中當單擊「更新」時,更改不會反映,它需要刷新以查看更改。 但是當我重新加載時,總是有Confirm Form Resubmission
。我使用<form action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>" method="post">
這意味着它在同一頁上提交。如何在提交表單後自動刷新頁面
1
A
回答
1
0
我傾向於使用AJAX表單提交:
// Bind the submit action
$('#myForm').submit(mySubmitFunction);
// Submit handler
function mySubmitFunction(e) {
e.preventDefault();
var form = $(this);
$.ajax({
url: form.attr('action'),
data: form.serialize()
}).done(function(xhr) {
// My endpoint returns JSON output
var responseJSON = false;
try {
responseJSON = $.parseJSON(xhr);
} catch (error) {}
if (responseJSON && responseJSON.hasOwnProperty('result') &&
responseJSON.result) {
// The important bit
location.reload();
} else {
// Handle error
}
});
}
我爲了選擇這種能夠提供快速反饋給用戶。如果你不想使用AJAX,PHP文件處理表單中的一個簡單的頭文件('Location:yourPage.php')就足夠了。
0
「更新」後,您的頁面已經重新加載,因爲Confirm Form Resubmission
警報彈出。我想問題是,在PHP腳本中,你在處理新的Post數據之前顯示數據。
0
所以你所描述的主要問題是URL請求方法是POST。如果在提交表單後刷新頁面,則瀏覽器將嘗試再次POST,就像按下提交按鈕一樣。
這實際上是一種非常自然的方式來提交數據(到表單生成的url)。大多數開源CMS會做同樣的事情並且具有相同的行爲(wordpress,drupal)。
我構建了一個自定義系統,做了同樣的事情,但有一些關於刷新觸發「你確定要再次提交此表單」而不是僅僅重新加載表單的投訴。所以我用@Bruce的解決方案解決了這個問題。在輸出任何內容之前,在我的頁面底部,我會重定向到當前的URL。這將瀏覽器眼中的前一頁更改爲GET而不是POST並防止重新提交警告。
至於你的數據沒有更新,你可能在處理帖子之前建立你的表單。確保處理帖子是您執行的第一項操作。
我的系統與此示例代碼有很大不同,所以不要指望這個功能可以直接使用。但它應該給你正確的想法。
<?php
if (isset($_SERVER["REQUEST_METHOD"]) && ($_SERVER["REQUEST_METHOD"] == "POST"))
{
// Validate my form.
if ($valid)
{
// Save data on successful validation.
// Redirect to prevent refresh from triggering another
// form submission. Optional but helpful.
redirect($_SERVER['REQUEST_URI']);
}
else
{
// Not valid no harm in just reloading as the user will be
// fixing their errors and resubmitting anyway.
// Generate error messages, etc.
}
}
// Retrieve your form values here after you have fully processed the POST
// operation.
$values = getDBValues();
function redirect($path)
{
// The path should be validated somehow as the user
// could alter parts of it such as query parameters.
// For simplicity I'm leaving that part out.
header('Location: ' . $path);
die();
}
?>
<html>
<form>
...
相關問題
- 1. 提交表單後刷新頁面
- 2. 刷新表單提交後的頁面
- 3. 提交表單後自動刷新頁面
- 4. 如何在表單提交後刷新.php頁面?
- 5. 如何在表單提交後刷新頁面?
- 6. 如何在表單提交後刷新頁面?
- 7. jQuery在表單提交刷新頁面
- 8. 表單在頁面刷新提交
- 9. 表單不會在自動刷新頁面上提交
- 10. 提交後刷新頁面
- 11. 如何避免jsp提交後頁面自動刷新
- 12. 如何在提交後刷新表單?
- 13. Ajax自動提交和刷新頁面
- 14. Intreceptor刷新表格後,提交頁面
- 15. 刷新頁面後提交ajax表格
- 16. 提交表格後刷新頁面
- 17. 提交表單後Jquery移動頁面刷新
- 18. 停止表單刷新頁面提交
- 19. 提交表單不刷新頁面
- 20. PHP - 頁面刷新表單提交
- 21. Ajax表單提交刷新頁面
- 22. 刷新頁面提交表單反覆
- 23. 頁面刷新導致表單提交
- 24. 表單提交無刷新頁面
- 25. jquery iframe表單提交刷新頁面
- 26. 提交表單php無刷新頁面
- 27. 表單提交按鈕/刷新頁面
- 28. Ajax表單提交刷新頁面
- 29. Symfony2表單提交頁面刷新
- 30. 如何防止表單提交jquery移動頁面刷新?
HTML表單的請提供樣品,以便我們能夠看到你可能已經做出 – Mike
任何錯誤,如果你需要簡單的刷新,您可以使用HTML元刷新 –
'htmlspecialchars'不應該被用來編碼路徑。它用於編碼輸出。 –