0

虽然我确定它一定是非常明显的,但我看不出我哪里出了问题。我有一个包含两个选项的下拉列表。当我选择一个选项时,它应该使用 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();
            }   
    };
?>

任何援助将不胜感激。

4

3 回答 3

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 注入漏洞,我也会修复)。

干杯。

于 2012-09-27T10:35:09.487 回答
0

您可以使用 XML 或 JSON 返回列表。本教程应该有所帮助。我个人会使用 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();

但是这两种方法都有很多教程。

于 2012-09-27T09:53:26.267 回答
0

检查 javascript 错误日志。这可能是问题所在,“请求”中的拼写错误。ajaxResuest.open("GET", strURL, true);

此外,您的 SQL 查询在 $network 参数中存在 SQL 注入漏洞。

于 2012-09-27T09:44:56.623 回答