Обновление значений одного Dropbox после изменения значения другого? PHP / JavaScrip (AJAX) - PullRequest
0 голосов
/ 18 апреля 2019

Я слежу за учебником по 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>";
?>

1 Ответ

1 голос
/ 18 апреля 2019

Вам нужно получить $q из суперглобальных $_POST или $_GET (в вашем случае $_GET).

Вы начинаете говорить о $q, прежде чем его определить.

Загляни в свой error_log, и я уверен, что это скажет тебе столько же!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...