2012-11-02 50 views
1

好吧,所以我創建了一個Javascript/PHP/Ajax應用程序。我有一個6個選擇框的序列。第一個是用HTML編寫的。當你改變選擇時,它通過Ajax向PHP發送一個變量,該變量使用變量來查詢數據庫。當第二個盒子改變它時,然後從前面的選擇框中發送2個變量。阿賈克斯鏈選擇框不刷新

每次選擇框發生變化時,它都會添加另一個要發送的變量。最後總共有5或6個變量都很好,一切運轉良好,幾乎可以做我想做的事情。

我的問題發生在選擇框3和6.

最初他們工作正常。但是當您返回更改選擇框2時,編號3不會刷新。值保持與以前相同。與數字6相同,當我更改數字3時,數字4改變並且順序數字5改變,但是數字6與先前的查詢保持相同。所有使用的Ajax代碼與僅變量名稱和相關元素更改相同。

任何人都可以幫忙嗎?我會發布鏈接到應用程序和有問題的ajax代碼。

就這樣你知道只有選擇框1最初是可見的,其餘的都是由php/ajax onchange生成的。

繼承人的代碼有問題

function getHTTPObject(){ 
if (window.ActiveXObject) 
    return new ActiveXObject("Microsoft.XMLHTTP"); 
else if (window.XMLHttpRequest) 
    return new XMLHttpRequest(); 
else { 
    alert("Your browser does not support AJAX."); 
    return null; 
} 
} 

function doWork(){ 
var selectBox = document.getElementById("SelectManufacturer"); // get HTML select box by id 
httpObject = getHTTPObject(); 

    httpObject.open("GET", "http://4udev.refixstudios.co.uk/wp-content/martTest/bNbAjax.php?inputText=" 
     +selectBox.options[selectBox.selectedIndex].text , true); 

    httpObject.onreadystatechange=function() 
      { 
      if (httpObject.readyState==4 && httpObject.status==200) 
        { 
        document.getElementById('selectModel').innerHTML = httpObject.responseText;; 
        } 
} 
httpObject.send() 
} 


function networkSelector() 
{ 
var selectBox2 = document.getElementById("SelectManufacturer"); // get HTML select box by id 
var selectModel = document.getElementById("modelSelector"); 
httpObject2 = getHTTPObject(); 

httpObject2.open("GET", "http://4udev.refixstudios.co.uk/wp-content/martTest/NetworkAjax.php?inputText2=" +selectBox2.options[selectBox2.selectedIndex].text +"&modelText2="+selectModel.options[selectModel.selectedIndex].text, true); 

    httpObject2.onreadystatechange = function() 
{ 

if(httpObject2.readyState == 4 && httpObject2.status==200){ 


    document.getElementById("networkSelect").innerHTML = httpObject2.responseText; 
} 


} 
httpObject2.send(); 
} 

function minuteSelector(){ 
    var selectBox3 = document.getElementById("SelectManufacturer"); // get HTML select box by id 
    var selectModel3 = document.getElementById("modelSelector"); 
    var NetworkSelect3 = document.getElementById("networkSelector"); 

    httpObject3 = getHTTPObject(); 

    httpObject3.open("GET", "http://4udev.refixstudios.co.uk/wp-content/martTest/minuteAjax.php?inputText3="+selectBox3.options[selectBox3.selectedIndex].text+"&modelText3="+selectModel3.options[selectModel3.selectedIndex].text+"&networkText3="+NetworkSelect3.options[NetworkSelect3.selectedIndex].text, true); 

    httpObject3.onreadystatechange = function(){ 

if(httpObject3.readyState == 4 && httpObject3.status==200){ 

    document.getElementById("minuteSelect").innerHTML =httpObject3.responseText; 
} 


} 
httpObject3.send(); 
} 

function textSelector(){ 
    var selectBox4 = document.getElementById("SelectManufacturer"); // get HTML select box by id 
    var selectModel4 = document.getElementById("modelSelector"); 
    var networkSelect4 = document.getElementById("networkSelector"); 
    var minuteSelect4 = document.getElementById("minutesSelector"); 

    httpObject4 = getHTTPObject(); 

    httpObject4.open("GET", "http://4udev.refixstudios.co.uk/wp-content/martTest/textAjax.php?inputText4=" +selectBox4.options[selectBox4.selectedIndex].text+"&modelText4="+selectModel4.options[selectModel4.selectedIndex].text+"&networkText4="+networkSelect4.options[networkSelect4.selectedIndex].text +"&minuteText4="+minuteSelect4.options[minuteSelect4.selectedIndex].text, true); 

    httpObject4.onreadystatechange = function(){ 

if(httpObject4.readyState == 4 && httpObject4.status==200){ 

    document.getElementById("textSelect").innerHTML =httpObject4.responseText; 
} 


} 
httpObject4.send(); 
} 

function dataSelector(){ 
    var selectBox5 = document.getElementById("SelectManufacturer"); // get HTML select box by id 
    var selectModel5 = document.getElementById("modelSelector"); 
    var networkSelect5 = document.getElementById("networkSelector"); 
    var minuteSelect5 = document.getElementById("minutesSelector"); 
    var textsSelector5 = document.getElementById("textsSelector"); 

    httpObject5 = getHTTPObjectAgainB(); 

    httpObject5.open("GET", "http://4udev.refixstudios.co.uk/wp-content/martTest/dataAjax.php?inputText5="+selectBox5.options[selectBox5.selectedIndex].text+"&modelText5="+selectModel5.options[selectModel5.selectedIndex].text+"&networkText5="+networkSelect5.options[networkSelect5.selectedIndex].text +"&minuteText5="+minuteSelect5.options[minuteSelect5.selectedIndex].text+"&textText5="+textsSelector5.options[textsSelector5.selectedIndex].text, true); 

    httpObject5.onreadystatechange = function(){ 

if(httpObject5.readyState == 4){ 

    document.getElementById("dataSelect").innerHTML = httpObject5.responseText; 
} 


} 
httpObject5.send() 
} 

這裏是鏈接到應用http://4udev.refixstudios.co.uk/csv-test/

測試的購買選擇任何製造商和型號,然後網絡,之後選擇蘋果的最佳方式---新的Ipad 4G,這是你如何注意到它不會改變。這個選擇應該只帶回橙網絡

而且繼承人它調用

<?php 


if (isset($_GET['inputText2'])) 
{ 
    $manufacturer = ($_GET['inputText2']); 

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

     $model = ($_GET['modelText2']); 



    } 

} 


$conA = mysql_connect("localhost","****","*****"); 
if (!$conA) 
    { 
    die('Could not connect: ' . mysql_error()); 
    } 
mysql_select_db("refixstu_4udev", $conA); 
$selectApplea = mysql_query("SELECT DISTINCT network FROM wp_selector_apple WHERE model = '$model' "); 
$selectBlackberry = mysql_query("SELECT DISTINCT network FROM wp_selector_blackberry WHERE model = '$model'"); 
$selectDoro = mysql_query("SELECT DISTINCT network FROM wp_selector_doro WHERE model = '$model'"); 
$selectHTC = mysql_query("SELECT DISTINCT network FROM wp_selector_htc WHERE model = '$model'"); 
$selectLG = mysql_query("SELECT DISTINCT network FROM wp_selector_lg WHERE model = '$model'"); 
$selectMotorola = mysql_query("SELECT DISTINCT network FROM wp_selector_motorola WHERE model = '$model'"); 
$selectNokia = mysql_query("SELECT DISTINCT network FROM wp_selector_nokia WHERE model = '$model'"); 
$selectSamsung = mysql_query("SELECT DISTINCT network FROM wp_selector_samsung WHERE model = '$model'"); 
$selectSony = mysql_query("SELECT DISTINCT network FROM wp_selector_sony WHERE model = '$model'"); 
$selectSonyE = mysql_query("SELECT DISTINCT network FROM wp_selector_sonyericsson WHERE model = '$model'"); 
$selectZte = mysql_query("SELECT DISTINCT network FROM wp_selector_ZTE WHERE model = '$model'"); 

?> 

<select id="networkSelector" style="width:100px;" align="right" onchange="minuteSelector()"> 
<option> Select Network </option> 
<?php 

         // Start Apple Testing 

         if($manufacturer == "Apple") 
         { 

            while($rowa = mysql_fetch_array($selectApplea)) 

            { 
              foreach(array_unique($rowa) as $model) 
             { 
              echo"<option>"; echo $rowa['network']; echo"</option>"; 

             } 

            } 

         } 
         else if($manufacturer == "BlackBerry") 
         {       
          while($rowa = mysql_fetch_array($selectBlackberry)) 

            { 
             foreach(array_unique($rowa) as $model) 
             { 
              echo"<option>"; echo $rowa['network']; echo"</option>"; 

             } 

            } 
         } 
         else if($manufacturer == "Doro") 
         {       
          while($rowa = mysql_fetch_array($selectDoro)) 

            { 
             foreach(array_unique($rowa) as $model) 
             { 
              echo"<option>"; echo $rowa['network']; echo"</option>"; 

             } 

            } 
         } 
         else if($manufacturer == "HTC") 
         {       
          while($rowa = mysql_fetch_array($selectHTC)) 

            { 
             foreach(array_unique($rowa) as $model) 
             { 
              echo"<option>"; echo $rowa['network']; echo"</option>"; 

             } 

            } 
         } 
         else if($manufacturer == "LG") 
         { 

            while($rowa = mysql_fetch_array($selectLG)) 

            { 
             foreach(array_unique($rowa) as $model) 
             { 
              echo"<option>"; echo $rowa['network']; echo"</option>"; 

             } 

            } 

         } 
         else if($manufacturer == "Motorola") 
         { 

            while($rowa = mysql_fetch_array($selectMotorola)) 

            { 
             foreach(array_unique($rowa) as $model) 
             { 
              echo"<option>"; echo $rowa['network']; echo"</option>"; 

             } 

            } 

         } 
         else if($manufacturer == "Nokia") 
         { 

            while($rowa = mysql_fetch_array($selectNokia)) 

            { 
             foreach(array_unique($rowa) as $model) 
             { 
              echo"<option>"; echo $rowa['network']; echo"</option>"; 

             } 

            } 

         } 
         else if($manufacturer == "Samsung") 
         { 

            while($rowa = mysql_fetch_array($selectSamsung)) 

            { 
             foreach(array_unique($rowa) as $model) 
             { 
              echo"<option>"; echo $rowa['network']; echo"</option>"; 

             } 

            } 

         } 
         else if($manufacturer == "Sony") 
         { 

            while($rowa = mysql_fetch_array($selectSony)) 

            { 
             foreach(array_unique($rowa) as $model) 
             { 
              echo"<option>"; echo $rowa['network']; echo"</option>"; 

             } 

            } 

         } 
         else if($manufacturer == "Sone Ericsson") 
         { 

            while($rowa = mysql_fetch_array($selectSonyE)) 

            { 
             foreach(array_unique($rowa) as $model) 
             { 
              echo"<option>"; echo $rowa['network']; echo"</option>"; 

             } 

            } 

         } 
         else if($manufacturer == "Zte") 
         { 

            while($rowa = mysql_fetch_array($selectLG)) 

            { 
             foreach(array_unique($rowa) as $model) 
             { 
              echo"<option>"; echo $rowa['network']; echo"</option>"; 

             } 

            } 

         } 


         mysql_close($conA); 
         ?> 


         </select> 
+0

對於一半的循環,你使用'array_unique',但不是其餘的。沒有看到查詢的結果,很難說這個問題是否重要。 – ethrbunny

+0

我沒有注意到,感謝評論我現在要修改這些。當你說結果時,你是指SQL的輸出? – Martin

+0

是的。不知道更多關於PHP是什麼「看到」它很難猜測爲什麼你看到..好..你看到什麼...... – ethrbunny

回答

0

我已經解決了這個問題的PHP。我的onchange調用了networkSelector()。我有一個HTML表單元素,名稱相同,並且是衝突的。我簡單地改變了函數名稱,它在我的測試服務器上工作耶!感謝您的幫助。非常感謝