2012-11-02 3 views
1

그래, Javascript/PHP/Ajax 응용 프로그램을 만들었습니다. 6 개의 선택 상자 시퀀스가 ​​있습니다. 첫 번째는 HTML로 하드 코딩됩니다. 선택을 변경하면 Ajax를 통해 PHP로 변수를 보내고 변수를 사용하여 데이터베이스를 쿼리합니다. 두 번째 상자가 변경되면 이전 선택 상자에서 2 개의 변수가 전송됩니다.Ajax 연결 선택 상자가 새로 고침되지 않습니다.

선택 상자가 변경 될 때마다 보낼 다른 변수가 추가됩니다. 결국에는 모두 5 ~ 6 개의 변수가 모두 좋으며, 모든 것이 잘 작동하고 거의 내가하고 싶은대로하고 있습니다.

내 문제는 선택 상자 3

6. 처음 그들이 잘 작동으로 발생합니다. 그러나 선택 상자 2를 변경하기 위해 돌아 가면 숫자 3이 새로 고쳐지지 않습니다. 값은 이전과 동일하게 유지됩니다. 숫자 6과 같지만 숫자 3을 변경하면 상자 4가 변경되고 순서 상자 5에서는 변경되지만 상자 6은 이전 쿼리와 동일하게 유지됩니다. 사용 된 모든 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() 
} 
에서

을 Heres 코드

는 --- 응용 프로그램 http://4udev.refixstudios.co.uk/csv-test/

이 애플을 선택한 후, 다음 네트워크를 어떤 제조업체와 모델을 선택 구매되는 테스트하는 가장 좋은 방법에 대한 링크입니다 New 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

를 호출을 heres PHP로 오렌지를 다시 데려 와야한다. 내 onchange는 networkSelector()입니다. HTML 폼 요소가 같았고 충돌이있었습니다. 나는 함수 이름을 간단하게 변경했고, 그것은 나의 테스트 서버에서 작동한다. 도와 주셔서 감사합니다. 많이 감사합니다

관련 문제