2013-03-17 33 views
0

我有一個下拉功能在JavaScript中只有汽車出現在選項表單中。 當用戶點擊「Acura」時,模型顯示「Vigor」,「RSX」...下拉的JavaScript和PHP

當模型被選定時,零件組應該出現,但它顯示出劑量。 我無法弄清楚第三個選項應該如何顯示。 感謝 這裏是我的代碼

getCars.php 

<?php 

$models = array(
"acura" => array("CL", "EL", "Integra", "Legend", "MDX", "NSX", "RL", "RSX", "SLX", "TL", "TSX", "Vigor"), 
"alfa" => array("1750", "Alfetta", "GTV-6", "Romeo 164", "Romeo Milano", "Spyder", "Spyder 1600 Duetto", "Spyder1600", "Veloce 2000") 

); 

$partgroup = array(
"Accessories" => array("Bed Cover", "Bed Liner", "Bed Rails", "Car Cover", "Converitible Boot Cover", "Jack", 
"Luggage Rack", "Spare Tire Cranks", "Spare Tire Holder", "Tool Kit") 

); 

//echo "Cars: " . $_GET['cars']; 


if(isset($_GET['cars'])) { 

    $c = $_GET['cars']; 
    $p = $_GET['partGroup']; 
     if(isset($models[$c])) { 
      for($i = count($models[$c]) -1; $i>=0; $i--) { 
       echo "<option value='" . $models[$c][$i] . "'>" . $models[$c][$i]. "</option>"; 
      } 
     } 

     else if(isset($partgroup[$p])) { 
       for($i = count($partgroup[$p]) -1; $i>=0; $i--) { 
       echo "<option value='" . $partgroup[$p][$i] . "'>" . $partgroup[$p][$i]. "</option>"; 
      } 
      } 

} 


?> 

index.php 

<html> 
<head> 
<title></title> 
</heady> 

<body> 

<form name="form1" action="submit.php" method='post'> 
Please choose a car model<br/> 
<select name="cars" onchange="window.getCars()"> 
<option disabled>Select Car model </option> 
<option value="acura">Acura</option> 
<option value="alfa">Alfa</option> 
</select> 

<br/> 



<input type="submit" name="submit" value="submit"> 
</form> 



<script type="text/javascript"> 
    function getCars() { 
     var xmlhttp; 
     try { 
      xmlhttp = new XMLHttpRequest; 

     }catch(e) 
     { 
      xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); 
     } 

     if(xmlhttp) { 
      var form = document['form1']; 
      var cars = form['cars'].value; 

      xmlhttp.open("GET", "http://localhost/drop/getCars.php?cars="+cars, true); 
      xmlhttp.onreadystatechange = function() 
      { 
       if(this.readyState == 4) { 
        var s = document.createElement("select"); 
        s.name = "model"; 
        s.innerHTML = this.responseText; 

        if(form['model']) { 
         form.replaceChild(s, form['model']); 
        }   


        else 
         form.insertBefore(s, form['submit']); 

        getpartGroup(); 
        //alert(this.responseText); 
       } 
      } 
      xmlhttp.send(null); 
     } 
    } 

</script> 

<script type="text/javascript"> 
    function getpartGroup() { 
     var xmlhttp; 
     try { 
      xmlhttp = new XMLHttpRequest; 

     }catch(e) 
     { 
      xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); 
     } 

     if(xmlhttp) { 
      var form = document['form1']; 
      var cars = form['partGroup'].value; 

      xmlhttp.open("GET", "http://localhost/drop/getCars.php?partGroup="+partGroup, true); 
      xmlhttp.onreadystatechange = function() 
      { 
       if(this.readyState == 4) { 
        var s = document.createElement("select"); 
        s.name = "partGroup"; 
        s.innerHTML = this.responseText; 

        if(form['partGroup']) { 
         form.replaceChild(s, form['partGroup']); 
        }   


        else 
         form.insertBefore(s, form['submit']); 

        //alert(this.responseText); 
       } 
      } 
      xmlhttp.send(null); 
     } 
    } 

</script> 




</body> 
</html> 
+0

我不知道PHP,但你欺騙了我的JavaScript標記,所以這可能是一個愚蠢的問題,但對我來說,它看起來像你在elseif聲明中的零件組?在if語句中找到模型後?我會認爲if循環會在第一個「if」條件成立時關閉。我不知道很多的JavaScript或者儘管如此忽略,如果我的方式關閉 – 2013-03-17 22:35:12

+0

@Four_lo:Javascript支持嵌套條件(如果語句內if語句),如果這就是你得到的。如果條件內的條件爲真,則'內部'語句將循環,然後像正常一樣繼續'外部'語句。 – 2013-03-18 03:03:14

回答

0

這是更簡單和更清潔的使用流行的JS框架之一,如jQuery,原型,骨幹,或下劃線。這些都支持ajax和更新DOM,檢查一些教程,這比手動搞亂xmlhttp要容易得多。

但是,如果您使用Firefox,您可以在chrome dev控制檯(ctrl-shift-i,右鍵單擊,切換Log XMLHttpRequests)或Firebug控制檯中查看ajax請求的位置和方式。打開控制檯,選擇一輛汽車,並且ajax請求應該出現在控制檯中,您可以點擊查看結果。

快速調試!