Я слежу за учебником по JavaScript AJAX для интерактивного общения с базой данных. Однако с небольшими отличиями мне удалось заставить работать код здесь - я использую PDO
, тогда как учебник явно mysql
.
В настоящее время я пытаюсь самостоятельно выяснить, как получить значение из одного раскрывающегося меню, чтобы оно действовало как «ключ» для заполнения другого раскрывающегося списка. Идея состоит в том, чтобы выбрать отдел, который представлен числами, и после выбора отдела он должен заполнить второе раскрывающееся меню пользователями из базы данных, но первым значением в качестве значения ключа для столбца в таблице базы данных.
Я считаю, что я правильно сделал код, но получаю ошибку 500. Ниже приводится журнал ошибок, который я получаю:
showCustomer @ Archive.php:114
onchange @ Archive.php:49
ListPicker._handleMouseUp
Строка 114 - это xhttp.send();
, и я совершенно не уверен, какую проблему это может вызвать.
Строка 49 - <select id="DEPT" name="DEPT" onchange="showCustomer(this.value)">
.
Я действительно растерялся из-за всего этого, я пытался сделать это самостоятельно, но эти ошибки слишком неуловимы для меня.
Ниже приведен код, который я адаптировал для минимальной сложности и максимального понимания, поскольку я удалил бессмысленные для проблемы биты. Я надеюсь, что это достаточно ясно.
archive.php :
<form action= "<?php $_PHP_SELF ?>" method = "GET">
<select id="DEPT" name="DEPT" onchange="showCustomer(this.value)">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
<option value="6">6</option>
<option value="7">7</option>
<option value="8">8</option>
<option value="9">9</option>
<option value="10">10</option>
</select>
<div id="txtHint">
<select></select>
</div>
</form>
<script>
function showCustomer(str)
{
console.log(str);
var xhttp;
if (str == ""){
document.getElementById("txtHint").innerHTML = "";
return;
}
xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function()
{
if (this.readyState == 4 && this.status == 200)
{
document.getElementById("txtHint").innerHTML = this.responseText;
}
};
xhttp.open("GET", "AJAX_connect_&_query.php?q="+str, true);
xhttp.send();
}
</script>
AJAX_connect _ & _ query.php :
<?php
echo $q;
$sql = "SELECT FIRST_NAME, MID_NAME, LAST_NAME from users WHERE DEPT='".$q."';";
$stmt = $GLOBALS['conn']->prepare($sql);
$stmt = $stmt->execute();
$data=$stmt->fetch(PDO:FETCH_ASSOC);
echo "<select>";
foreach ($data as $row)
{
echo "<option>".$row['FIRST_NAME']." ".$row['MID_NAME']." ".$row['LAST_NAME']."</option>";
}
echo "</select>";
?>