有些浏览器在提交表单时不会更新隐藏的输入

时间:2010-11-18 11:17:25

标签: php javascript jquery mysql html

我有一个分类广告网站,在 index.html 中有一个表单。 此表单目标设置为iframe,也位于 index.html

<form id="main" name="main" action="search.php" target="iframe" method="get">

我在加载页面时使用body onload提交表单:

 <body onload='submit_form();'>

结果如我在 iframe 中所显示的那样,我使用MySql Limit来创建分页。 我向用户显示“下一个”和“上一个”:(所有这些都显示在iframe中,所以我在父页面上调用该函数,如下所示)

<a onclick='window.parent.page_upd(2)'>Page 2</a>

function page_upd(p){
  document.getElementById('page').value=p;
  document.forms['main'].submit();
}

<input type="hidden" id="page" value="1">

如您所见,我将 index.html 中的隐藏输入设置为 pagenumber 我希望用户查看,然后我提交表单,并在操作(search.php)中我获取页面并相应地显示:

 //search.php
  $page = $_GET['page'];

分页适用于所有浏览器,因此可以使用不同的页面。 但是当实际点击搜索结果,并转到完全不同的链接(show_ad.php),然后回击时,用户将被带回搜索结果的第一页。

换句话说,“页面”再次设置为1。 但并非在所有浏览器中,FF甚至IE6“记住”“页面”值,并且它仍然是“2”(例如第二页),因此表单提交显示第二页

但在Chrome和Opera中,页面设置为“1”。

有人知道为什么在浏览器中回来时“页面”输入值再次设置为1?

由于

3 个答案:

答案 0 :(得分:1)

我认为这与浏览器缓存有关。有些浏览器似乎加载了页面,就好像你对该页面进行了新的加载,而其他浏览器仍然从缓存中取出了正确的页面。

解决方法可能是在您的应用程序中包含一个自己的后退按钮,将用户发送到正确的页面。

答案 1 :(得分:0)

您的输入字段需要name属性才能在提交时用作参数名称。 id属性仅用作标识符以查找页面上的元素。

<input type="hidden" id="page" name="page" value="1">
                               ^^^^^^^^^^^

答案 2 :(得分:0)

那是因为页面没有再次加载,因此没有onLoad()