1

我正在尝试使动态下拉框成为一种搜索工具,以帮助缩小来自 mysql 服务器的显示数据的范围。我是一个体面的 php 程序员,但需要 javascript 和 ajax 方面的帮助。

该站点目前由 3 个页面组成:index_test.php、dropdown.php 和 dropdown2.php。

在 index_test.php 上有 4 个下拉菜单需要填充信息。第一个是在页面加载时使用 php 从 mysql 表中填充状态名称。第二个框使用引用 php 代码的 .change() 填充,并从 mysql 表中显示处于选定状态的学校。然后第三个框应该从第二个框中获取选定的值,并将所选学校的班级名称显示给用户,这一步是代码被破坏的地方。通过提交表单进行测试时,php 可以工作,但我希望能够在不刷新页面的情况下填充最后两个框。mysql 表的格式为: 表学校:(school_id,schools, states) 表类:(class_id,school_id,class_abrv,class_number)

感谢您的帮助

index_test.php 的代码:

<?php include_once("connect.php"); ?>
<html>
<head>
<title>ajax</title>
<script src="jquery.js"></script>

<script type="text/javascript">
$(document).ready(function(){
$("#state").change(function(){
var state = $("#state").val();
$.ajax({
type:"post", 
url:"dropdown.php", 
data:"state="+state, 
success: function(data) {
$("#school").html(data);
}
});
});

$("#school").change(function(){
var state = $("#school").val();
$.ajax({
type:"post", 
url:"dropdown2.php", 
data:"school="+school, 
success: function(data) {
$("#classname").html(data);
}
});
});

});

</script>


</head>
<body>

<h1>Get Notes:</h1>
<br/>
<form action="dropdown2.php" method="post">

State: <select id="state" name="state">
<option>--Select State--</option>
<?php   
$sql = "SELECT states FROM states";
$result = mysql_query($sql);

while ($output = mysql_fetch_array($result)) {
$state_name = $output['states'];
echo "<option value=\"$state_name\">$state_name</option>";
}       
?>
</select>
<br/>

School: <select id="school" name="school">
<option>--Select School--</option>
</select>
<br/>

Class Name: <select id="classname" name="classname">
<option>--Select Class Name--</option>
</select>
<br/>

Class Number: <select id="classnumber" name="classnumber">
<option>Select Class Name</option>
</select>
<br/>

<input type="submit" value="Search" />
</form> 


</body>
</html>

Dropdown.php:

<?php
include_once("connect.php");

$state=$_POST["state"];
$result = mysql_query("select schools FROM schools where states='$state' ");
while($school = mysql_fetch_array($result)){
echo"<option value=".$school['schools'].">".$school['schools']."</option>";
}
?>

Dropdown2.php

<?php
include_once("connect.php");

$school=$_POST['school'];
$result = mysql_query("SELECT school_id FROM schools WHERE schools='$school' ");
$school_id = mysql_fetch_array($result);

$id = $school_id['school_id'];
$classname = mysql_query("SELECT DISTINCT class_abrv FROM classes WHERE school_id='$id'           ORDER BY class_abrv asc");

while($class = mysql_fetch_array($classname)){
echo"<option value=".$class['class_abrv'].">".$class['class_abrv']."</option>";
} 
?>
4

1 回答 1

0

in second ajax function you have assigned the school drop down box value to state variable but you pass the variable school to ajax post. So there is no school variable that is why you get error.

$("#school").change(function(){
 var *state* = $("#school").val();
 //above variable should be school.
 $.ajax({
  type:"post", 
  url:"dropdown2.php", 
  data:"school="+*school*, 
  success: function(data) {
   $("#classname").html(data);
  }
 });
});
于 2013-07-22T01:35:00.930 回答