Я знаю, что это популярный вопрос, и я рассмотрел множество примеров, пытаясь окунуться в AJAX
и jQuery
.Использование AJAX для возврата результатов запроса на основе раскрывающегося списка
У меня есть простая ситуация с одним выпадающим ящиком при изменении отправляет 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);
?>
Чтобы проверить, запущен ли файл, вы можете ответить некоторыми жестко закодированными фиктивными данными вместо того, чтобы запускать код, который может завершиться ошибкой. – Marcus
Спасибо - оказалось, что мне нужно было поместить полный путь в php-файл. Я запускал его из WordPress, и он, должно быть, пытался найти его. – RGriffiths
, пожалуйста, добавьте mysql_real_escape_string в ваш запрос выбора, если вы не хотите, чтобы каждый мог сбросить вашу базу данных. – herrjeh42