将不属于表单的HTML页面中的值传递给php页面


pass a value from HTML page which is not part of a form to a php page

我知道在页面之间传递变量的一般方法是有一个表单,在表单中有这些元素,如下所示,并将它们作为$_GET['year']$_GET['dropdown'] 访问

<body>
<form method="get" action="index.php">
    <select name="language">        
        <option value = "english">English</option>
        <option value = "tagalog">Tagalog</option>
    </select>
    </br>
    <select name="year">
        <option value="2010">2010</option>
        <option value="2011">2011</option>
    </select>
    <input type="submit" value="submit">
</form>
</body>

然而,在传递这两个变量,即yeardropdown的同时,我还想传递另一个变量,它不是表单的一部分。因此,尽管表单中只有两个元素,但我希望GET URL看起来如下

http://localhost:63342/ApplicationName/php/index.php?language=tagalog&year=2010&randomNumber=1932932

请注意URL末尾的randomNumber=11932932

我不能使用会话变量,因为在同一浏览器中,对于同一用户,我希望不同的选项卡对应不同的值。

如果你不想使用像jQuery这样的东西(它比原生JavaScript容易得多),你可以为提交按钮制作一个简单的点击处理程序:

<body>
<form method="get" action="test.php">
    <select name="language">        
        <option value = "english">English</option>
        <option value = "tagalog">Tagalog</option>
    </select>
    <select name="year">
        <option value="2010">2010</option>
        <option value="2011">2011</option>
    </select>
    <input type="submit" value="submit" onclick="submitForm()">
</form>
</body>
<script>
    function submitForm() {
        var randomNumber = Math.floor((Math.random() * 10000) + 1); 
        var hiddenfield = document.createElement('input');
        hiddenfield.setAttribute('type', 'hidden');
        hiddenfield.name = 'randomnumber';
        hiddenfield.value = randomNumber;
        document.getElementsByTagName('form')[0].appendChild(hiddenfield);
    }
</script>

这将在发布前向表单添加一个隐藏字段,并在隐藏字段中添加一个介于1-10000之间的随机数。

您可以在表单中使用隐藏输入

<input type="hidden" value="something" name="name" />

您可以选择在Ajax中构建get方法。在这里,您可以访问页面中的所有元素,并将传递到您的url中。这样,您就不会将"get parameters"限制为仅表单中的元素http://www.w3schools.com/jquery/jquery_ajax_get_post.asp

如果您仍然使用GET,您可以使用javascript根据输入创建URL,并导航到它,而不是提交表单。

<body>
<select name="language" id="lang">        
    <option value = "english">English</option>
    <option value = "tagalog">Tagalog</option>
</select>
</br>
<select name="year" id="year">
    <option value="2010">2010</option>
    <option value="2011">2011</option>
</select>
<input type="button" onclick="nav()" value="submit">
<script>
    function nav(){
        var url = 'index.php?';
        var ids = ['lang', 'year'];
        var input;
        for (var i = 0; i < ids.length; i++) {
            input = document.getElementById(ids[i]);
            url += encodeURIComponent(input.name) + '=' + encodeURIComponent(input.value) + '&';
        };
        url += 'randomNumber=' + 1932932; // generate a number here
        document.location = url;
    }
</script>
</body>