1

我有一个 php 文件,允许用户选择搜索页面的条件。提交数据(使用post方法)后,页面会将用户定向到搜索结果页面。我认为用户很可能希望返回“选择条件页面”以选择不同的搜索条件。用户可以通过两种方式返回“条件”页面。他们可以单击带有“condition.php”的锚标记,也可以单击浏览器的最后一页按钮(我现在正在使用 chrome)。

因此,当我单击浏览器的最后一页按钮时,问题或错误就出现了。多个条件选择的隐藏类型输入的值已更改。似乎后者的输入值向上移动并取代了原始值。

所以,我主要有两个问题。

  1. 我遇到了什么问题?
  2. 如何解决?

以下是 html 示例的一部分:

<form method="post" action"search-result.php">
<div id="category">
  <ul id="002001000">
    <li><input type="hidden" value="002001001">freestyle</li>                       
    <li><input type="hidden" value="002001002">frogstyle</li>
  </ul>
  <ul id="002003000">
    <li><input type="hidden" value="002003001">math</li>
    <li><input type="hidden" value="002003002">English</li>
    <li><input type="hidden" value="002003003">Biology</li>
  </ul>
</div>

<div id="location_list">
  <div id="region">
    <ul>
      <li rel="asia"><input type="hidden" value="Asia(Taiwan,Japan)">Asia</li>
      <li rel="america"><input type="hidden" value="America(USA,Canada)">America</li>
    </ul>
  </div>
  <div id="nation">
    <ul id="asia">
      <li><input type="hidden" value="Taiwan">Taiwan</li>
      <li><input type="hidden" value="Japan">Japan</li>
    </ul>
    <ul id="america">
      <li><input type="hidden" value="USA">USA</li>
      <li><input type="hidden" value="Canada">Canada</li>
    </ul>
  </div>
</div>
<input type="submit">
</form>

如果我点击“English”,例如,提交,直接到搜索结果页面,然后我点击“最后一页”按钮回到这个条件页面,“English”的值和下面的其他值将被替换为这个:

<div id="category">
  <ul id="002001000">
    <li><input type="hidden" value="002001001">freestyle</li>                       
    <li><input type="hidden" value="002001002">frogstyle</li>
  </ul>
  <ul id="002003000">
    <li><input type="hidden" value="002003001">math</li>
    <li><input type="hidden" value="002003002">English</li>
    <li><input type="hidden" value="Asia(Taiwan,Japan)">Biology</li>
  </ul>
</div>

<div id="location_list">
  <div id="region">
    <ul>
      <li rel="asia"><input type="hidden" value="America(USA,Canada)">Asia</li>
      <li rel="america"><input type="hidden" value="Taiwan">America</li>
    </ul>
  </div>
  <div id="nation">
    <ul id="asia">
      <li><input type="hidden" value="Japan">Taiwan</li>
      <li><input type="hidden" value="USA">Japan</li>
    </ul>
    <ul id="america">
      <li><input type="hidden" value="Canada">USA</li>
      <li><input type="hidden" value="Canada">Canada</li>
    </ul>
  </div>
</div>
<input type="submit">
4

2 回答 2

0

单击浏览器的返回按钮时,浏览器可能会返回一个缓存版本。如果你在你的 php 页面中使用它,它不会被缓存。

header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1
header("Expires: Sat, 26 Jul 1997 05:00:00 GMT"); // Date in the past

从某种意义上说,这应该可以解决它,因为它将从服务器获得一个新页面。当然,您仍然应该填写服务器上的字段......否则,它可能与输入字段的自动完成有关。利用

<input autocomplete="off"/>

在您的输入字段上,看看是否可以解决它!

于 2012-09-21T07:33:35.560 回答
0

您可以使用 GET 表单将条款放在 URL 中。

如果您不希望它们在 URL 中可见,您可以将它们存储在服务器端的会话变量中。

于 2012-09-21T07:33:25.510 回答