保留GET请求中的值

时间:2010-02-11 16:37:56

标签: php javascript html forms get

<form method="get" action="">
   <select name="name" onchange='this.form.submit()'>
      <option value="a">a</option>
      <option value="b">b</option>
   </select>
   <select name="location" onchange='this.form.submit()'>
      <option value="x">x</option>
      <option value="y">y</option>
   </select>
</form>

我选择选项'a'并且它工作正常,但是如果我选择'x','a'值会从URL中消失,我该如何保留所有值?

编辑:同样在提交表单时,如何确保所选值仍然在选择菜单中保持选中状态?

由于

3 个答案:

答案 0 :(得分:5)

提交表单会将目标页面加载到窗口中(在这种情况下,目标页面与您所在的页面相同)。当用户从列表中选择一个项目时,我强烈建议提交表单;这不是用户期望发生的事情。

但是如果你这样做了,你必须跟踪用户选择的“到目前为止”服务器端的字段,然后在selected标签上设置相应的option属性他们之前选择的价值,例如在生成表单时:

<option value='a' selected>a</option>

但同样,最好让他们做出选择,然后用某种按钮提交表格。如果您希望列表的内容根据他们目前所选择的项目进行更改,您可以使用客户端JavaScript(可能与服务器的Ajax查询结合使用)来实现这一目标。

答案 1 :(得分:0)

以下是对selfURL()函数的快速更新,该函数可帮助您解决问题。

function selfURL() 
{ 
    $s = empty($_SERVER["HTTPS"]) ? '' : ($_SERVER["HTTPS"] == "on") ? "s" : ""; 
    $protocol = strleft(strtolower($_SERVER["SERVER_PROTOCOL"]), "/").$s; 
    $port = ($_SERVER["SERVER_PORT"] == "80") ? "" : (":".$_SERVER["SERVER_PORT"]);
    $uri  = $_SERVER['REQUEST_URI'];
    $querystring = empty($_SERVER['QUERY_STRING']) ? '' : '?'.$_SERVER['QUERY_STRING'];
    return $protocol."://".$_SERVER['SERVER_NAME'].$port.$_SERVER['REQUEST_URI'].$url.$querystring;
}

答案 2 :(得分:0)

form标记更改为:

<form method="get" action="<?= _SERVER["REQUEST_URI"] ?>">