2012-04-20 6 views
1

私がダウンして、複数のドロップを作るために、このサイトのオフに探しています:Roshan's BlogAJAX複数のドロップダウン

そして、それのほとんどが働いている、私はちょうどダウンボックス第三のドロップに問題を抱えています。
(Dropdown1:クライアント、Dropdown2:場所、Dropdown3:ゾーン)これまでの私のページで

、私はソースを見れば、最初のドロップダウン(クライアント1)を選択した後、2番目のドロップダウン文は言う:
<select style="width: 150px;" id="add-event-dialog-location" name="add-event-dialog-location" onchange="getZone(Client1,this.value)">

これはどちらが必要なのですか。しかし、2番目のドロップダウンのオプションの1つをクリックすると、getZone()スクリプトを使用しません。 'zonediv'は変更されていません。残っているかどうかはわかりません。 getZone.phpを単独でロードしてURLに自分自身のGETステートメントを置くと、結果が得られますが、ドロップダウンを呼び出すページ内でgetZone.phpを取得できません。

私はおそらくちょっとしたものを見逃しているかもしれませんが、私はずっとそれを見てきました。私はそれを理解できません。

HTML:

<select style="width: 150px;" name="add-event-dialog-client_name" id="add-event-dialog-client_name" onchange="getLocation(this.value)"> 
        <?php 
         echo "<option selected='selected' disabled='disabled'>-Client Name-</option>"; 
         $result = mysql_query("SELECT DISTINCT client_name FROM spc_clients"); 
         while($row = mysql_fetch_array($result)){ 
          echo "<option value='".$row['client_name']."'>".$row['client_name']."</option>"; 
         } 
        ?> 
       </select> 
       <p id="locationdiv"> 
       <select style="width: 150px;" name="add-event-dialog-location" id="add-event-dialog-location" disabled="disabled"> 
        <option>Select Client First</option> 
       </select> 
       </p> 
       <p id="zonediv"> 
       <select style="width: 150px;" name="add-event-dialog-zone" id="add-event-dialog-zone" disabled="disabled"> 
        <option>Select Location First</option> 
       </select> 
       </p> 

JS機能の両方:

function getLocation(client_name) {  
    var strURL="display/getLocation.php?client_name="+client_name; 
    var req = getXMLHTTP(); 

    if (req) { 
     req.onreadystatechange = function() { 

      if (req.readyState == 4) { 
       // only if "OK" 
       if (req.status == 200) {       
        document.getElementById('locationdiv').innerHTML=req.responseText;      
       } else { 
        alert("There was a problem while using XMLHTTP:\n" + req.statusText); 
       } 
      }    
     }   
     req.open("GET", strURL, true); 
     req.send(null); 
    }  
} 

function getZone(client_name,location) {   
    var strURL="display/getZone.php?client_name="+client_name+"&location="+location; 
    var req = getXMLHTTP(); 

    if (req) { 
     req.onreadystatechange = function() { 

      if (req.readyState == 4) { 
       // only if "OK" 
       if (req.status == 200) {       
        document.getElementById('zonediv').innerHTML=req.responseText;      
       } else { 
        alert("There was a problem while using XMLHTTP:\n" + req.statusText); 
       } 
      }    
     }   
     req.open("GET", strURL, true); 
     req.send(null); 
    }  
} 

getLocation.php:

<?php 
include 'connect.php'; 

$client = $_GET['client_name']; 

$query="SELECT location FROM spc_clients WHERE client_name='$client'"; 
$result=mysql_query($query) or die(mysql_error()); 

?> 
<select style="width: 150px;" id="add-event-dialog-location" name="add-event-dialog- location" onchange="getZone(<?=$client?>,this.value)"> 
<option selected='selected' disabled='disabled'>-Location-</option> 
<?php 
while($row = mysql_fetch_array($result)){ 
    echo "<option value='".$row['location']."'>".$row['location']."</option>";} 
?> 
</select> 

getZone.php:

<?php 
include 'connect.php'; 

$client = $_GET['client_name']; echo $client; 
$location = $_GET['location']; echo $location; 

$query="SELECT zone FROM spc_clients WHERE (client_name='$client' &&  location='$location')"; 
$result=mysql_query($query) or die(mysql_error()); 
?> 

<select style="width: 150px;" id="add-event-dialog-zone" name="add-event-dialog-zone"> 
<option selected='selected' disabled='disabled'>-Zone-</option><option><?php 
while($row = mysql_fetch_array($result)){ 
    echo $row['zone'];} 
?> 
</option> 
</select> 
+0

Firefoxでhttp://getfirebug.com/、またはChromeの開発ツールを使用して、JavaScriptエラーを探したり、AJAX呼び出しの結果を確認しようとしましたか? – jessica

+0

Operaのエラーコンソールで「Uncaught exception:ReferenceError:Undefined variable:Client1」が表示されます。それでも、理由は分かりません。 – Nicole

+0

ああ、私は今問題を見る。私は答えを投稿します。 – jessica

答えて

0

引用符を付けずにClient1の前後に引用符を入れてみてください。javascriptは変数だと思っていますが、Client1という変数を定義していないのでエラーになります。その周りに引用符を付けると、getZone()に渡す文字列になります。

getLocation.phpでこれを入れてみてください:

<select style="width: 150px;" id="add-event-dialog-location" name="add-event-dialog- location" onchange="getZone('<?=$client?>',this.value)">

あなたのクライアント名のいずれかが、それらの中に引用符を持っている場合は、あなたがそれらをエスケープすることを確認する必要があります、実行する方法についてはこちらをご覧くださいそれは Pass a PHP string to a JavaScript variable (and escape newlines)です。

+0

私はそれを逃したと信じられない!うーん、私はそれがそれほど簡単なものになるだろうと分かっていました。私が使用したリファレンスにもそれらがありませんでしたが、それはおそらく問題を見ることができなかった理由の1つです。 – Nicole

+0

@ニコール涼しい、あなたのためにそれを修正したら、私は受け入れていただければ幸いです! :) – jessica

関連する問題