标签:php javascript xhtml
我在旧版本中知道这一点,但我无法弄清楚处理后退按钮的最佳做法.
我正在编写一个Web应用程序,在浏览器和后端服务器之间有大量数据移动.我目前使用post,当然当用户绕过应用程序导航并使用后退按钮IE和Firefox弹出消息询问用户是否要重新发送数据.
我尝试了“获取”,除了URL中显示的所有数据外,IE8仍会生成一条消息.
此外,我无法确定帖子何时导致消息,何时不能确定消息,因为我有测试用例发布数据,其中后退按钮不会导致消息.
我的环境是JavaScript,PHP和MySQL.
任何帮助或指向研究地点的指针都非常感谢.
编辑:
我写了3个小页来测试发布a-> b-> c-> a并且它们不会导致任何postdata消息.我不知道为什么:
一个
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>test post A</title>
</head>
<body>
<h1>testPostA.php</h1>
<h3>Came from <?php print (isset($_POST['data'])?$_POST['data']:"NoWhere"); ?></h3>
<form action="testPostB.php" method="post">
<input name="data" type="text" value="from testPostA.php" />
<input type="Submit" value="Submit To: testPostB.php" />
</form>
</body>
</html>
乙
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>test post B</title>
</head>
<body>
<h1>testPostB.php</h1>
<h3>Came from <?php print (isset($_POST['data'])?$_POST['data']:"No where"); ?></h3>
<form action="testPostC.php" method="post">
<input name="data" type="text" value="from testPostB.php" />
<input type="Submit" value="Submit To: testPostC.php" />
</form>
</body>
</html>
C
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>test post C</title>
</head>
<body>
<h1>testPostC.php</h1>
<h3>Came from <?php print (isset($_POST['data'])?$_POST['data']:"No where"); ?></h3>
<form action="testPostA.php" method="post">
<input name="data" type="text" value="from testPostC.php" />
<input type="Submit" value="Submit To: testPostA.php" />
</form>
</body>
</html>
解决方法:
Post/Redirect/Get模式将阻止重新POST警告.但是,您仍然需要注意您的应用程序可以处理/拒绝重复的表单提交等.
编辑1
对于Javascript很重的应用程序,我也看到了一些利用browser history和fragment identifiers提供与后退按钮,书签等无缝集成的设计模式.
编辑2
关于你问题的附录,很难说.可能是在某些情况下浏览器将页面缓存,并且不需要重新提交POST以再次呈现页面.您可以使用各种方法来禁用这些请求上的浏览器缓存,以查看是否可以使行为更具可预测性(即始终导致重新提交警告).无论如何,我认为遵循Post / Redirect / Get模式的Web应用程序更加用户友好,但您的里程可能会有所不同.
另外要记住的是,您可以在执行查询,生成报告等的表单上使用method =“get”.有时GET在这些只读方案中是更好的选择,因为它使您的URL方案更丰富并避免这些一些POST警告.
标签:php,javascript,xhtml 来源: https://codeday.me/bug/20190722/1498764.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。