0

それは本当に明白なことであるに違いないと私は確信していますが、私はこれでどこが間違っているのかわかりません。2つのオプションを含むドロップダウンリストがあります。オプションを選択すると、XMLHttpRequest()を使用して、選択したオプションに基づいてデータベースから顧客のリストを取得する必要があります。

私には2つの部分があります:

ajax2_js.php-javascriptおよびhtmlフォームが含まれています。

ajax2_DBAccess.php-データベースからリストを取得するPHPが含まれています。

2ページ目ですべてを確認しましたが、これはそれ自体で正常に機能します(そして、関連するリストをドロップダウンメニューとして表示します)が、最初のページでオプションを選択しても何も起こりません。

これまでの私のコードは次のとおりです。

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

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

助けてくれてありがとう、私はそれを3つのことまで追跡しました(すべて私のせいです):

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

JavaScript エラー ログを確認します。これが問題かもしれません。「Request」のスペルミスです。ajaxResuest.open("GET", strURL, true);

また、SQL クエリは、$network パラメーターで SQL インジェクションの脆弱性に悩まされています。

于 2012-09-27T09:44:56.623 に答える