2012-04-20 3 views
1

Я ищу покинуть этот сайт, чтобы сделать несколько выпадающий: Roshan's BlogAJAX Multiple падение Downs

И большинство из них работает, я просто имеющий проблемы с 3-го выпадающего списка.
(Dropdown1: Клиенты, Dropdown2: Место, Dropdown3: зона)

На моей странице до сих пор, если я смотрю на источнике, после выбора первого раскрывающегося списка (client1), то второе выпадающее утверждение говорит:
<select style="width: 150px;" id="add-event-dialog-location" name="add-event-dialog-location" onchange="getZone(Client1,this.value)">

Это то, что мне нужно, но теперь, когда я нажимаю на один из вариантов во втором раскрывающемся списке, он не помещается через скрипт getZone(). «Zonediv» не меняется, и я не уверен, переживает ли остальное или нет. Если я сам загружу getZone.php и поместил в свои собственные операторы GET в URL-адрес, я получаю результаты, но я не могу получить их на странице, с которой я звоню.

Возможно, мне просто не хватает чего-то маленького, но я так долго смотрел на него, что я просто не могу понять это.

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

Вы пытались использовать http://getfirebug.com/ в Firefox или средствах разработки Chrome для поиска ошибок javascript и/или просмотра результатов ваших вызовов AJAX? – jessica

+0

Я получаю «Исключить исключение: ReferenceError: Неопределенная переменная: Client1» в консоли ошибок Opera. Тем не менее, не знаю почему. – 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

Не могу поверить, что я пропустил это! Фу, я знал, что это будет просто так просто. У справки, которую я использовал, также не было их, это, вероятно, одна из причин, почему эта проблема не видела. – Nicole

+0

@Nicole Cool, если это исправлено для вас, я был бы признателен за принятие! :) – jessica

Смежные вопросы