重置URL查询参数的表单帖子的逻辑?

时间:2018-04-27 19:52:07

标签: php post

在选择列表中通过onchange =“formType.submit()”进行更新时,我没有得到预期的结果。

我希望将PHP $ _POST值设置为新网址,但在提交表单时看起来该值仍未显示。

原始网址:http://example.com/Select-item.php?type=4

<form action="Select-item.php?type=<?php echo $_POST['selItem']; ?>" method="post" id="formType">   
<select name="selItem" id="selItem" onchange="formType.submit()">
    <option value="1">change to 1</option>
    <option value="2">change to 2</option>
    <option value="3">change to 3</option>
</select>
</form>

我收到的错误是未定义索引(... Select-item.php?type = Notice:%20Undefined%20index:%20 ...)

通过发布到同一页面,读取$ _POST值然后使用来更新此页面URL的正确方法

2 个答案:

答案 0 :(得分:1)

PHP在将HTML代码传输到客户端之前生成HTML代码;在客户收到代码后,它会将其呈现给网站 您的代码无法正常工作的原因,因为执行<?php echo $_POST['selItem']; ?>时没有设置POST-Variable selItem;它是在表单提交后设置的。

如果您真的想将selItem作为GET 传输为POST变量 - 这样做的一种可行方法是使用此函数(未经测试):

<script>
    function onSelectChange() {
        // Access the select-field and get it's value
        var sel = document.getElementById("selItem");
        var selectedValue = sel.options[sel.selectedIndex].value;

        // Change the target URL of the form
        document.getElementById("formType").action = 'Select-item.php?type='+ selectedValue;
        formType.submit()
    }
</script>

并在您的选择中编辑onChange-Listener:onchange="onSelectChange"

但是我建议使用GET - 这样selItem也会一直在URL中,你不需要同时检查$ _GET和$ _POST

答案 1 :(得分:0)

在使用$ _POST

之前,请务必使用isset()函数进行检查

示例:

if(isset($_POST['selItem'])){
//your code here

}