我想给getStuName()
函数传递两个参数,但是发现有错误,谁能帮我语法?
<script language="javascript">
function getStuName1(val, val1) {
if(val!=''){
$.ajax({
type: "POST",
url: "get_stuname1.php",
data:'yr='+val+'&classname='+val1,
success: function(data){
$("#stu-list1").html(data);
}
});
alert(data);
}else{
document.getElementById('stuname').options.length=1;
document.getElementById('stuname').options[0].text='Please select';
}
} //end function
</script>
<select style="font-size: 18px;" name="yr" onChange="getStuName1(this.value);">
<option value="2021-2022">2021-2022</option>
<option value="2022-2023">2022-2023</option>
<option value="2023-2024">2023-2024</option>
<option value="2024-2025">2024-2025</option>
<option value="2025-2026">2025-2026</option>
<option value="2026-2027">2026-2027</option>
</select>
<select style="font-size: 18px;" name="classname" id="class-list" class="demoInputBox" onChange="getStuName1(this.value);">
<option value="" selected>please select</option>
<?php
$sql="SELECT classname FROM class";
$class_result = mysqli_query($db_link,$sql);
while($rs = mysqli_fetch_array($class_result, MYSQLI_ASSOC)) {
?>
<option value="<?php echo $rs["classname"]; ?>"><?php echo $rs["classname"]; ?></option>
<?php
}
?>
</select>
get_stuname1.php的内容
<?php
require_once("connMysql.php");
$sql_stu ="SELECT * FROM stu_hist WHERE enabled='1' AND sch_yr = '" . $_POST['yr'] . "' AND classname = '" . $_POST['classname'] . "' ORDER BY classno";
$stu_result = mysqli_query($db_link,$sql_stu);
while($rs = mysqli_fetch_array($stu_result, MYSQLI_ASSOC)) {
?>
<option value="<?php echo $rs["stu_name"]; ?>"> <?php echo $rs["stu_name"]; ?></option>
<?php
}
?>
我想获取yr和classname并将它们传递给函数getStuName1,但无法显示学生姓名
2条答案
按热度按时间lzfw57am1#
要确保两个
select
菜单中的值(或者全部,如果有更多)在ajax请求中使用一个方法,你可能会考虑使用一个全局变量,当选择菜单触发change
事件时,你会填充这个全局变量。我们感兴趣的是填充时的有效长度,因为我们可以决定仅在两个/所有选择菜单都已更改时才发送AJAX请求。这一切都是在没有jQuery的情况下完成的,但是fetch
代码可以很容易地用合适的jQuery代码替换。7uzetpgm2#
由于您要向getStuName 1函数传递两个参数,因此不要使用onChange(对于
one
选择框中的更改),建议您有一个按钮,当two
和two
都被选中时,该按钮可以提交two
所选的值(“确认提交”X1 M2 N1 X是优选的选择,因为通常一个人需要在实际提交之前确定他/她的所有选择框都被正确地选中,并且实际上如果仅选择了选择框中的一个则没有触发 AJAX 的点)因此
1.确保两个选择框都有一个唯一的id(因此为yr选择框添加id=“yr”)
1.添加例如触发传递两个选择框的所选值的按钮,例如:
以及
因此,将代码更改为
[补充要点]
最后,请修改你的PHP脚本,使用参数化的预准备语句,以抵御SQL注入。你可以参考以下内容:
对于Mysqli:
https://www.php.net/manual/en/mysqli.quickstart.prepared-statements.php
对于PDO
https://www.php.net/manual/en/pdo.prepare.php