2013-11-28 34 views
0

我目前有一个名为item.php的PHP页面,它上面有一个链接“添加项目”。什么是用PHP设计我的网页表单流的正确方法?

当用户点击链接时,它会将它们转到save.php,其中页面会执行一些操作,例如将项目保存到数据库。在该页面中,有保存代码运行后重定向:

header("Location: item.php); 

现在item.php页面上显示“删除项目”的链接,因为它应该。

问题出在这里:如果用户现在点击浏览器上的返回按钮,它会再次向他们展示item.php页面(我不想),并再次向他们显示“添加项目”链接我也不想)。

如何解决此问题,以便浏览器历史堆栈中只有一个item.php页面?

+1

您是否考虑过使用jQuery和AJAX添加项目而不刷新整个页面?看起来这将是您的问题最优雅的解决方案。 – Charles

+0

这听起来像是最好的解决方案,我只是不熟悉这两者(我通常是桌面/移动应用程序开发人员),所以我看到是否有简单的东西,我在这里失踪。 –

+0

只是为了澄清,当用户点击后退按钮刷新'item.php'时会发生什么?刷新后应该说“删除项目”,不是吗? – Charles

回答

1

如果您不愿意使用AJAX,我认为您真正想问的问题是“按下后退按钮后,如何刷新item.php?”

有几种方法可以实现这一点,下面是使用JavaScript/jQuery完成的一个方法。库的隐藏<input>变量称为“刷新”,当用户点击“添加项目”提交:

<input type="hidden" id="refresh" value="no"> 

现在,你可以使用下面的jQuery函数:

$(document).ready(function(e) { 
if ($("#refresh").val() == 'yes') { location.reload; } else { $('#refresh').val('yes'); } 
}); 

以下是此代码的工作:第一次加载页面并呼叫$(document).ready时,隐藏的input值为“no”,这意味着上述功能将该值设置为“yes”。然后,当用户点击“后退”按钮时,隐藏字段值将保持不变(但仍然是),但是$(document).ready将再次被调用。这一次被调用时,它将重新加载页面。

相关阅读:http://www.hunlock.com/blogs/Mastering_The_Back_Button_With_Javascript

一个解决方案使用PHP:How do I make Firefox reload page when back button is pressed?

让我知道如果我解释不清楚,或者如果您有任何疑问。希望这可以帮助。

相关问题