Javascript 在更改另一个dropbox的值后更新一个dropbox的值?PHP/JavaScrip(AJAX)

Javascript 在更改另一个dropbox的值后更新一个dropbox的值?PHP/JavaScrip(AJAX),javascript,php,ajax,pdo,dropdown,Javascript,Php,Ajax,Pdo,Dropdown,我正在学习关于如何与数据库进行交互式通信的教程。然而,尽管略有不同,我还是设法让代码在这里工作——我使用的是PDO,而教程是明确的mysql 目前,我一直在尝试自己找出如何从一个下拉菜单中获取一个值,作为填充另一个下拉框的“键”。我的想法是选择一个部门,它由数字表示,在选择了一个部门后,它应该用数据库中的用户填充第二个下拉菜单,但第一个值作为数据库表中列的键值 我相信我已经正确地完成了代码,但是我得到了错误500。下面是我得到的错误日志: showCustomer @ Archive.ph

我正在学习关于如何与数据库进行交互式通信的教程。然而,尽管略有不同,我还是设法让代码在这里工作——我使用的是
PDO
,而教程是明确的
mysql

目前,我一直在尝试自己找出如何从一个下拉菜单中获取一个值,作为填充另一个下拉框的“键”。我的想法是选择一个部门,它由数字表示,在选择了一个部门后,它应该用数据库中的用户填充第二个下拉菜单,但第一个值作为数据库表中列的键值

我相信我已经正确地完成了代码,但是我得到了错误500。下面是我得到的错误日志:

showCustomer    @ Archive.php:114
onchange    @   Archive.php:49
ListPicker._handleMouseUp 
第114行是
xhttp.send()我很不确定这可能会导致什么样的问题

第49行是

我真的对这整件事感到困惑,我试着自己去做,但这些错误对我来说太难以捉摸了

Bellow是我为了最小化复杂性和最大程度的理解而修改的代码,因为我删除了问题中的无意义部分。我希望这足够清楚


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>
<?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>";
?>

您需要从
$\u POST
$\u get
超全局(在您的情况下,
$\u get
)获取
$q

在定义它之前,您开始谈论
$q


查看您的
错误日志,我相信它会告诉您同样的信息

我已经试过了,也许我应该提一下。我在php代码中做了类似的事情,但结果是一样的:
echo$dept=$\u GET['q'];$sql=“从DEPT=”“$DEPT.”的用户中选择名字、中间名、姓氏请记住,我是从头开始写上述语句的,可能是错误的。Archive.php:114 GET localhost/AJAX\u connect\u&\u query.php?q=12500(内部服务器错误)showcuster@Archive.php:114 onchange@Archive.php:49 ListPicker。\u handleMouseUp是Apache日志还是php日志?它看起来不像PHP onechange this
$stmt=$stmt->execute()
仅此
$stmt->execute()
execute返回boolWarning:您完全可以使用参数化的prepared语句,而不是手动构建查询。它们由或提供。永远不要相信任何类型的输入,尤其是来自客户端的输入。即使您的查询仅由受信任的用户执行。