在Php标头重定向后提供反馈

时间:2013-04-25 10:33:00

标签: php javascript jquery html forms

我在用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页面时,只要我们重新定向到打开表格的原始页面,就会丢失所拾取的任何错误。

有人可以提出任何建议吗?

4 个答案:

答案 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));
    ...
}