持久化表单外部和内部创建的GET变量


Persist GET vars that created outside and inside a form

假设我有一个HTML页面"myPage.php",它的表单使用GET方法并调用自己:

<form name="myForm" action="myPage.php" method="get">
 <input type="text" name="input1" />
 <input type="text" name="input2" />
 .
 .
 .
 <input type="submit" />
</form>

而且,在这个页面和表单之外,我有一个锚也调用页面本身,但与一个GET变量"myVar"添加(一个GET变量不是表单的变量之一):

<a href="myPage.php?myVar=100"></a>

现在…我希望所有的变量都能被持久化,无论表单是被提交还是链接被按下。
例如,如果用户按下链接,URL将获得'myVar=100' +表单变量(就好像表单也是在按下链接的同时提交的),反之亦然——如果用户提交了表单,URL将获得表单的变量以及'myVar ',如果它确实在URL中。

有办法吗?

谢谢你

因此,简单的方法是用

设置链接
<a href="#" onClick="document.form_name.submit();">Something</a>

同时,将窗体中的动作更改为

<form action"myPage.php?var=100" method="get" name="form_name" id="form_name">
...

,它们将发送相同的表单。不管怎样,表单输入都是这样或那样处理的?


编辑:好吧,如果它取决于链接点击,那么:

1)。接收PHP中的myVar

$myCurrval = $GET['myVar'];

2)。赋值给JS变量

<script type="text/javascript">
var JOHNNY = <?php echo $myCurrval; ?>
</script>

2)。添加一个隐藏输入

<input type="hidden" id="myVar" name="myVar" value="" />

2)。并将链接更改为

<a href="#" onClick="processForm();">Something</a>

3)。然后,创建一个名为processForm()的JS方法,它将决定是否设置myVal。

function processForm() {
 if (JOHNNY != ''){
   document.getElementById('myVar').value=JOHNNY;
 }
}

这样,你的myVar值只有在之前被接收时才会传播(这意味着,你第一次发送它时,它会持续存在)。不知何故,我将使用$_SESSION来保存请求之间的内容!事实上,它更安全,更容易!!:)

希望能有所帮助。