下拉重新加载页面,然后检索值

Dropdown reload page then retrieve value

本文关键字:然后 检索 加载 新加载      更新时间:2023-09-26

到目前为止,Hello一直在尝试使用这行代码,我的目标是通过select然后select获取值,这样页面将使用所述值重新加载,这样我也许能取回它。这两者都是一种形式。这就是我应该在重新加载后使用我的值的地方。

    <input type="hidden" name="student_id" class="typed" readonly="readonly" value="<?php echo @$get_display->student_id;?>">

这就是我试图在获得上面的值时重新加载页面的方法。

    <select name="lvl" onchange="window.location='search_enroll.php?id='$_GET['student_id']">

感谢您的帮助。

这就是我检索的方式我在上一条语句中遇到了问题重新加载后的值。

   if (!empty($_POST['searchstudent'])){
                $id = $_POST['searchstudent'];
            }else if(!empty($_GET['id'])){
                $id = $_GET['id'];
            }
            else {
                $id= $_GET['student_id'];
            }

当您编写时

<select name="lvl" onchange="window.location='search_enroll.php?id='$_GET['student_id']">

实际上,您导航到的student_id与进入页面的student_id相同。

你想做的是问"用户选择了哪个student_id?"并在下一页加载中使用它。

HTML应该看起来像

<form action="search_enroll.php">
    <select name="id" onchange="submit()">
       <option> student_id_1 </option>
       <option> student_id_2 </option>
        ...
    </select>
</form>

如果有任何问题,请告诉我。

这里有一个JSFiddle来模拟重新加载。(它将显示一个404,因为"search_enroll.php"不存在,但您仍然可以看到重载工作。)

编辑:在我被解释了这个选择的目的后,添加了"隐藏"输入字段

如果你有两个字段(student_id,grade),你应该在表单中添加一个隐藏的输入字段

<form action="search_enroll.php">
        <input value="<?php echo $_GET['student_id']?>" type="hidden"/>
        <select name="grade" onchange="submit()">
           <option> student_id_1 </option>
           <option> student_id_2 </option>
            ...
        </select>
</form>

这将确保用户之前选择的student_id将传递给另一个重载。

如果您在表单中,您可以在更改时提交表单:

onchange="document.yourForm.submit()"

所有参数都将可用于您的PHP脚本。

您不想在select元素中使用PHP,因为它是在生成页面(服务器响应)时填充的,但您要做的是在将请求发送到服务器时填充它。

最简单的方法是使用onchange="document.aForm.submit()",在该字段更改时,简单地提交带有任何值的表单。您的服务器端验证需要能够理解这是部分提交,并且不应向用户显示错误消息。


回答发帖人的问题:

您有以下事件链:

  1. 客户端请求表单页面
  2. 服务器发送响应,select元素填充有option元素
  3. 客户端选择select元素中的一个option元素
  4. 客户端向服务器发送请求,其中包括选定的option不知何故
  5. 服务器发送响应,其中一些表单元素已更改,客户端在上次请求中选择的option元素已预先选定

服务器不能在步骤1中预填充select元素的onchange属性(并且不应该在步骤5中预填充,因为客户端可能改变其选择);服务器不知道客户端将选择哪个选项,直到客户端在步骤3选择并在步骤4将该选择发送到服务器。

我和其他人建议使用submit()而不是window.location的原因是,对于表单,客户端可以按任何顺序填写字段,或者您可以稍后在select之前添加字段,在这种情况下,最好保留这些选择。如果PHP在生成表单时从POST对象中获取所有字段,则submit会保留这些字段。如果使用window.location,则会丢失GET请求中未包含的所有字段。

如果确实要使用window.location,则必须使用JavaScript来获取路径的选定option的值(类似于?id=document.aForm.selectElement.options[document.aForm.selectElement.selectedIndex])。