虽然我确定它一定是非常明显的东西,但我看不出我在哪里出错了。我有一个下拉列表,里面有两个选项。当我选择一个选项时,它应该使用XMLHttpRequest()根据所选的选项从数据库中获取客户列表。
我有两个部分:
ajax2_js.php - 包含javascript和html表单。
ajax2_DBAccess.php - 包含从数据库获取列表的PHP。
我已经检查了第二页上的所有内容,这可以自行运行(并将相关列表显示为下拉菜单),但是当我在第一页上选择该选项时,没有任何反应。
到目前为止我的代码是:
ajax2_js.php
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<script>
function ajaxFunction()
{
var ajaxRequest;
ajaxRequest = new XMLHttpRequest();
ajaxRequest.onreadystatechange = function()
{
if(ajaxRequest.readyState == 4)
{
document.getElementById('customerDiv').innerHTML=req.responseText;
}
}
ajaxResuest.open("GET", strURL, true);
ajaxRequest.send(null);
}
</script>
</head>
<body>
<form method="post" action="" name="form1">
Network : <select name="network" onChange="ajaxFunction('ajax2_DBAccess.php?network='+this.value)">
<option value="">Select Network</option>
<option value="1">Net1</option>
<option value="2">Net2</option>
</select>
</br>
Customer : <div id="customerDiv">
<select name="select">
<option>Select Customer</option>
</select>
</div>
</form>
</body>
ajax2_DBAccess.php
<?php
$network=$_GET['network'];
$q1 = "SELECT `CustName` FROM monitor.customers where network = $network;";
$con = new mysqli('localhost:3306', 'xxx', 'xxx');
if (mysqli_connect_errno())
{
$error = mysqli_connect_error();
echo $error;
exit();
}
else
{
$ConfRes = mysqli_query($con, $q1);
if ($ConfRes)
{
echo "<select name=\"Customers\">";
echo "<option>Select Customer</option>";
while($row=mysqli_fetch_array($ConfRes, MYSQLI_ASSOC))
{
$result = $row['CustName'];
echo "<option value>$result</option>";
};
echo "</select>";
}
else
{
$error = mysqli_error();
echo $error;
exit();
}
};
?>
任何帮助都将不胜感激。
答案 0 :(得分:0)
检查javascript错误日志。 这可能是问题,“请求”中的拼写错误。 ajaxResuest.open(“GET”,strURL,true);
此外,您的SQL查询会遇到$ network参数中的SQL注入漏洞。
答案 1 :(得分:0)
您可以使用XML或JSON返回列表。这tutorial应该会有所帮助。我个人会使用XML。
header("Content-type: text/xml");
// Iterate through the rows, adding XML nodes for each
while ($row = @mysql_fetch_assoc($result)){
// ADD TO XML DOCUMENT NODE
$node = $dom->createElement("marker");
$newnode = $parnode->appendChild($node);
$newnode->setAttribute("CustName",$row['CustName']);
}
echo $dom->saveXML();
但是这两种方法都有很多教程。
答案 2 :(得分:0)
感谢所有帮助人员,我已将其追踪到三件事(我的全部错误):
function ajaxFunction()
应该是:
function ajaxFunction(strURL)
。
ajaxResuest.open("GET", strURL, true);
应该是:
ajaxRequest.open("GET", strURL, true);
最后:
document.getElementById('customerDiv').innerHTML=req.responseText;
应该是
document.getElementById('customerDiv').innerHTML=ajaxRequest.responseText;
(当然还有上面提到的SQL注入漏洞,我也会修复)。
欢呼声。