繁体   English   中英

下拉列表重新加载页面,然后获取值

[英]Dropdown reload page then retrieve value

您好,到目前为止,我一直在尝试使用这一行代码,我的目标是通过select重新加载页面,然后select获取值,以便页面将使用上述值重新加载,这样我就可以检索到它。 两者均为1形式。 这是我应该在重新加载后得到我要使用的值的地方。

    <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?” 并在下一页加载中使用。

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”不存在,但您仍然可以看到重新加载有效。)

编辑:在我解释了此选择的目的之后,添加了“隐藏”输入字段

如果您有2个字段(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,因为在生成页面(服务器响应)时会填充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] )。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM