我有一个HTML表单,在我点击“更新”后,更改没有反映出来,需要刷新才能看到更改。
但是当我重新加载时,总会出现确认表单重新提交
。
我使用了<form action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>" method="post">
这意味着它在同一页上提交。
if(isset($_POST[submits])) {
header("location:index.php"); // your current page
}
方法:2
if(isset($_POST['submit'])) {
//Your SQL Query
echo "<meta http-equiv='refresh' content='0'>";
}
方法三:(不建议使用)
onsubmit="window.location.reload();"
,似乎无法正常工作。因此,我在其中使用了定时函数以使其正常工作。
onsubmit="setTimeout(function() { window.location.reload(); }, 5)"
Way : 4
<form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
onsubmit="setTimeout(function(){window.location.reload();},5)"
。根据您的需要增加时间,以提交表单并重新加载到页面上。我已更新了方法并添加了更多方法。 - Bruce<?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>
...
你的页面在“更新”后已经重新加载,因为弹出了“确认表单重新提交”的警报。我猜问题在于在 PHP 脚本中,在处理新的 Post 数据之前,你显示了数据。
我倾向于使用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
}
});
}
$_SERVER['PHP_SELF']
。特别是在使用 htmlspecialchars 的情况下。只需将 action 留空即可。这并不能回答“如何在提交表单后自动刷新页面”的问题,但是留空 action 将导致您尝试做的完全相同的事情(这是错误的)。 - Loko