未执行Javascript函数。为什么?

未执行Javascript函数。为什么?,javascript,php,html,Javascript,Php,Html,我试图在不刷新页面的情况下用html打印一个表,所有这些都是基于下拉菜单中的选择。我正在访问我的数据库并正确填充下拉菜单,但是当表出现时,脚本甚至没有被执行 我确信我还有更多的事情要做,但我不知道该做什么 main.php <!DOCTYPE html> <html> <head> <title></title> <meta http-equiv="Content-Type" content="text/html; charset

我试图在不刷新页面的情况下用html打印一个表,所有这些都是基于下拉菜单中的选择。我正在访问我的数据库并正确填充下拉菜单,但是当表出现时,脚本甚至没有被执行

我确信我还有更多的事情要做,但我不知道该做什么

main.php

<!DOCTYPE html>
<html>
<head>
<title></title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>
<body>


<script language="javascript" type="text/javascript">
function showCustomer(str){
    var choice = str.value;

    var xmlhttp;
    if (choice==0){         
        document.getElementById("display").innerHTML="No person selected";
        return;
    }
    if(window.XMLHttpRequest){
        xmlhttp=new XMLHttpRequest();
    }else{
        xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
    }
    xmlhttp.onreadystatechange=function();{
        if(xmlhttp.readyState==4 && xmlhttp.status==200){
            document.getElementById("display").innerHTML=xmlhttp.responseText;          
        }
    }
    xmlhttp.open("GET","showtable.php?q="+str,true);
    xmlhttp.send();
}
</script>


<p>
<form>
<select name="customer" onchange="showCustomer(this)">
<?php
$hostname = 'localhost';
$username = 'root';
$password = '';
try {
    $dbh = new PDO("mysql:host=$hostname;dbname=lab9",$username, $password, array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES 'UTF8'"));
    $dbh->exec("SET CHARACTER SET UTF8");
}
catch(PDOException $e)
{
    echo $e->getMessage();
}
$stmt=$dbh->prepare("SELECT id,name FROM customers");
//echo "<p>";
//echo "<select name=\"customer\" onchange=\"".<script>showCustomer(this.value)</script>;."\">";
$zero=0;
echo "<option value=".$zero.">Select person</option>";
$stmt->execute();
$result=$stmt->fetchAll();
foreach ($result as $row)
{
      //unset($id, $name);
      $id = $row['id'];
      $name = $row['name']; 
      echo "<option value=".$id.">".$name."</option>";                 
}
?> 
</select>
</form>
</p>


<p id="display"></p>
</body>
</html>
<?php
$q=$_GET["q"];

$hostname = 'localhost';
$username = 'root';
$password = '';
try {
    $dbh = new PDO("mysql:host=$hostname;dbname=lab9",$username, $password, array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES 'UTF8'"));
    $dbh->exec("SET CHARACTER SET UTF8");
}
catch(PDOException $e)
{
    echo $e->getMessage();
}
$stmt=$dbh->prepare("SELECT id,name,adress,city,tk,phone,mobile FROM customers WHERE id=".$q."");
$stmt->execute();
$result=$stmt->fetchAll();
foreach($result as $row){
    echo "<p>";
    echo "<table border='1'>";
    echo "<tr>";
    echo "<td>ID</td><td>".$row['id']."</td>";
    echo "</tr>";
    echo "<tr>";
    echo "<td>Name</td><td>".$row['name']."</td>";
    echo "</tr>";
    echo "<tr>";
    echo "<td>Adress</td><td>".$row['adress']."</td>";
    echo "</tr>";
    echo "<tr>";
    echo "<td>Town</td><td>".$row['city']."</td>";
    echo "</tr>";
    echo "<tr>";
    echo "<td>Τ.Κ.</td><td>".$row['tk']."</td>";
    echo "</tr>";
    echo "<tr>";
    echo "<td>Telephone number</td>".$row['phone']."<td></td>";
    echo "</tr>";
    echo "<tr>";
    echo "<td>Mobile</td><td>".$row['mobile']."</td>";
    echo "</tr>";
    echo "</table>";
    echo "</p>";
}


?> 

功能显示客户(str){
var选择=str.value;
var-xmlhttp;
如果(选项==0){
document.getElementById(“显示”).innerHTML=“未选择任何人”;
返回;
}
if(window.XMLHttpRequest){
xmlhttp=新的XMLHttpRequest();
}否则{
xmlhttp=新的ActiveXObject(“Microsoft.xmlhttp”);
}
xmlhttp.onreadystatechange=function(){
if(xmlhttp.readyState==4&&xmlhttp.status==200){
document.getElementById(“display”).innerHTML=xmlhttp.responseText;
}
}
open(“GET”、“showtable.php?q=“+str,true”);
xmlhttp.send();
}


正如@Xufox所说,change
function();{
to
function(){
。同样在showtable.php上,您的
“选择id、姓名、地址、城市、tk、电话、来自客户的手机,其中id=“.q.”
可能您输入了一个错误?从地址到地址?如果有帮助,请告诉我!

“脚本甚至没有被执行。”哪个脚本?你是如何确认的?@KevinB很抱歉,我指的是showCustomer功能。它应该是called@KevinB我的描述真的很糟糕。我的意思是浏览器中唯一显示的是下拉菜单,当我选择不同的选项时,函数中没有任何内容被执行。更改
function(){
函数(){
。使用(点击
F12
)并读取任何错误。使用类似的工具可以立即查找代码中的问题。