未执行Javascript函数。为什么?
我试图在不刷新页面的情况下用html打印一个表,所有这些都是基于下拉菜单中的选择。我正在访问我的数据库并正确填充下拉菜单,但是当表出现时,脚本甚至没有被执行 我确信我还有更多的事情要做,但我不知道该做什么 main.php未执行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
<!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所说,changefunction();{
tofunction(){
。同样在showtable.php上,您的“选择id、姓名、地址、城市、tk、电话、来自客户的手机,其中id=“.q.”
可能您输入了一个错误?从地址到地址?如果有帮助,请告诉我!“脚本甚至没有被执行。”哪个脚本?你是如何确认的?@KevinB很抱歉,我指的是showCustomer功能。它应该是called@KevinB我的描述真的很糟糕。我的意思是浏览器中唯一显示的是下拉菜单,当我选择不同的选项时,函数中没有任何内容被执行。更改function(){
到函数(){
。使用(点击F12
)并读取任何错误。使用类似的工具可以立即查找代码中的问题。