0

假设我有类似网站mydomain.com/test.php?pikazi=true 并且有表单

  <form action="test.php"  method="get">
    <input name="drzava-asc" type="image" src="images/sort-asc.gif">
    <input name="drzava-desc" type="image" src="images/sort-desc.gif" >
  </form>

如何在prikazi=true从表单添加新内容的同时保持现有状态

mydomain.com/test.php?pikazi=true&drzava-asc.x=6&drzava-asc.y=1

drzava-asc 的值由脚本生成,因为它是图像而不是提交按钮。

我使用了现有的网址:

parse_str($_SERVER['QUERY_STRING'], $query_arr);
$url=http_build_query($query_arr);

我可以将它用作隐藏字段,但不确定如何。还有其他方法吗?

4

2 回答 2

1

编辑:

您只需在表单中添加一个隐藏字段:

<form action="test.php"  method="get">
  <input name="prikazi" type="hidden" value="true" />
  <input name="drzava-asc" type="image" src="images/sort-asc.gif">
  <input name="drzava-desc" type="image" src="images/sort-desc.gif" >
</form>

就是这样:) 干杯!

于 2013-04-20T21:53:06.943 回答
1

你不能,不能直接。

如果您正在使用POST,您可以拥有action=""并且它将所有GET变量保留在那里。但是,您正在使用GET这样会覆盖它们。

如果您使用的是服务器端语言,例如 PHP,您可以这样做:

<form action="test.php" method="get">
    <?php foreach($_GET as $k=>$v) echo "<input type=\"hidden\" name=\"".$k."\" value=\"".htmlspecialchars($v)."\" />"; ?>
    Rest of form here...
</form>

或 JavaScript 中的类似内容:

var forms = document.getElementsByTagName('form'), l = forms.length, i,
    qs = location.search.substr(1).split("&"), m = qs.length, j, tmp, inp;
for( i=0; i<l; i++) {
  if( forms[i].method.toLowerCase() != "get") continue;
  for( j=0; j<m; j++) {
    inp = document.createElement('input');
    inp.type = "hidden";
    tmp = qs[j].split("=");
    inp.name = tmp.shift();
    inp.value = tmp.join("=");
    forms[i].appendChild(inp);
}
于 2013-04-20T21:54:46.790 回答