【发布时间】:2013-07-20 04:38:56
【问题描述】:
我知道这是一个很受欢迎的问题,并且我查看了许多示例,试图让我了解 AJAX 和 jQuery。
我有一个简单的情况,一个下拉框在更改时会根据下拉框选择发送AJAX 请求以获取SQL 查询的结果。
页面加载正确,当从下拉框中选择部门时调用函数(警报告诉我),但我没有收到任何返回数据。在尝试确定问题时,如何判断 getTeachers.php 文件是否实际运行?
网页 服务端调用getTeacher.php的脚本
<script src="http://localhost/jquery/jquery.min.js">
</script>
<script>
function checkTeacherList(str)
{
var xmlhttp;
if (str=="")
{
document.getElementById("txtTeacher").innerHTML="";
return;
}
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
document.getElementById("txtTeacher").innerHTML=xmlhttp.responseText;
}
}
xmlhttp.open("GET","getTeachers.php?q="+str,true);
xmlhttp.send();
alert(str); //To test it is getting this far, which it does
}
</script>
从服务器返回数据的下拉框和 txtTeacher ID
<select name="department_list" id="department_list" onchange="checkTeacherList(this.value);" >
<?php
$options[0] = 'All';
$intloop = 1;
while($row = mysql_fetch_array($department_result))
{
$options[$intloop] = $row['departmentName'];
$intloop = $intloop + 1;
}
foreach($options as $value => $caption)
{
echo "<option value=\"$caption\">$caption</option>";
}
?>
</select>
<div id="txtTeachers">Teacher names</div>
服务器端 PHP - getTeachers.php
<?php
$q=$_GET["q"];
$con = mysql_connect('localhost', 'root', '');
if (!$con)
{
die('Could not connect: ' . mysql_error($con));
}
$db_selected = mysql_select_db("iobserve");
$sql="SELECT * FROM departments WHERE departmentName = '".$q."';";
$result = mysql_query($sql);
while($row = mysql_fetch_array($result))
{
echo $row['teacherName'];
}
mysql_close($con);
?>
【问题讨论】:
-
要测试文件是否运行,您可以使用一些硬编码的虚拟数据进行响应,而不是运行可能失败的代码。
-
谢谢 - 原来我需要将完整路径放入 php 文件中。我从 WordPress 运行它,它一定很难找到它。
-
如果您不希望每个人都可以删除您的数据库,请将 mysql_real_escape_string 添加到您的选择查询中。