我在用javascript(和jquery)和php编写的应用程序中有一个html表。表的内容存储在MySql表中。
当我希望用户向表中添加一些数据时,他们会单击一个按钮并显示一个jquery ui对话框,其中包含一个供用户填写的表单。
当用户填写表单时,他们单击“保存”,表单将提交到纯php页面,该页面将数据保存到表中,然后使用
$url = BASE_URL . '/admin/pages/finance/pricing/pricing_schedule.php';
header('Location: '.$url); //Redirect to the right page
exit();
我这样做是因为我不想要这条消息:
确认表单重新提交 - 您要查找的页面使用了您输入的信息。返回页面可能会导致您重复执行任何操作。你想继续吗?
显示用户是否应该因任何原因点击刷新。
但是,由于我这样做的方式,如果保存不成功,我很难提供一种向用户提供反馈的方法。
当用户在jquery ui对话框中点击保存时,在提交表单时该框关闭,所以我无法在那里提供反馈,因为还没有发生错误。
当我们进入php页面时,只要我们重新定向到打开表格的原始页面,就会丢失所拾取的任何错误。
有人可以提出任何建议吗?
答案 0 :(得分:2)
您可以在$_SESSION
变量中存储任何错误,并在重定向的页面上打印出来。
答案 1 :(得分:0)
简单的GET参数怎么样?
有些内容:
header('Location: ' . $url . '?success=false&reason=blah');
在$url
的该页面上,您首先要查找$_GET['success']
的值。如果它不是"success"
,请回显其他HTML,说它不成功。
if ($_GET['success'] == "true") {
echo "<p>SUCCESS!</p>";
..
} else {
echo "<p>FAILED!</p>";
..
}
答案 2 :(得分:0)
考虑通过AJAX提交表单以避免页面刷新。
查看本教程:http://net.tutsplus.com/tutorials/javascript-ajax/submit-a-form-without-page-refresh-using-jquery/
解决方案(未经测试)
jQuery代码:
var form_data = $('#save_period_form').serialize(); alert(form_data);
$.ajax({
type: "POST",
url: "period_submit.php",
data: form_data,
dataType: 'html',
success: function(returninfo) {
if(returninfo=='1'){
alert('finish');
//will redirect to pricing schedule page after the user has pressed 'ok' on the alert popup.
window.location.assign('/admin/pages/finance/pricing/pricing_schedule.php');
} else {
alert('error occured');
}
}
});
PHP代码:
//Commented header redirection code because it's being done in the javascript code now.
//$url = BASE_URL . '/admin/pages/finance/pricing/pricing_schedule.php';
//header('Location: '.$url); //Redirect to the right page
//Assuming your save has been successful, we echo value '1'. Else echo something else..
echo '1';
exit();
答案 3 :(得分:0)
另一个想法是通过url中的哈希传输消息:
if (isset($_POST['submit'])) {
...
header("Location: ".$_SERVER["REQUEST_URI"]."#".urlencode($msg));
...
}