到目前为止,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()"
,在该字段更改时,简单地提交带有任何值的表单。您的服务器端验证需要能够理解这是部分提交,并且不应向用户显示错误消息。
回答发帖人的问题:
您有以下事件链:
- 客户端请求表单页面
- 服务器发送响应,
select
元素填充有option
元素 - 客户端选择
select
元素中的一个option
元素 - 客户端向服务器发送请求,其中包括选定的
option
(不知何故) - 服务器发送响应,其中一些表单元素已更改,客户端在上次请求中选择的
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]
)。