2010-07-27 4 views
0

Я пытаюсь создать список цепочек здесь. Я хочу, чтобы пользователь выбирал что-то в первом раскрывающемся списке, и как только последний выбирается, должен появиться другой. Я просто тестирую свой код прямо сейчас, и по какой-то причине мои коды не показывают раскрывающийся список, который должен отображаться при изменении последнего ввода.Пожалуйста, помогите мне с этим ajax/javascript/php

Это мой ява скрипт

function GetXmlHttpObject(){ 
    var objXMLHttp = null; 
    if(window.XMLHttpRequest){ 
     objXMLHttp = new XMLHttpRequest(); 
    }else if(window.ActiveXObject){ 
     objXMLHttp=new ActiveXObject("Microsoft.XMLHTTP") 
    } 
    return objXMLHttp; 
} 

function stateChanged(n){ 
    if(xmlHttp.readyState == 4 || xmlHttp.readyState == "complete"){ 
     alert(xmlHttp.responseText); 
     document.getElementById("yearSelect").innerHTML = xmlHttp.responseText; 
    } 
} 
function showTest(v,p,r){ 
    alert("HI"); 
} 

function showBoxes(v,p,r){ 
    xmlHttp=GetXmlHttpObject(); 
    url=""; 
    if(v == 1){ 
     //by year 
     xmlHttp.onreadystatechange=stateChanged("yearSelect"); 
     url = 'result.php?sid=' + Math.random() + '&type=1&product=' + p + '&vendor=' + r; 

    }else if(v == 2){ 
     xmlHttp.onreadystatechange=stateChanged("monthSelect"); 
     url = 'result.php?sid=' + Math.random() + '&type=2&product=' + p + '&vendor=' + r; 
     //by month 
    }else if(v == 3){ 
     xmlHttp.onreadystatechange=stateChanged("weekSelect"); 
     url = 'result.php?sid=' + Math.random() + '&type=3&product=' + p + '&vendor=' + r; 
     // by week 
    } 
    //url.replace(" ","%20"); <-- Do I need to do this? 
    alert(url); 
    xmlHttp.open("GET",url,true); 
    xmlHttp.send(); 
} 

Это мой result.php. Прямо сейчас, это очень просто, он просто возвращает теги select.

<?php 
     ?> 
     <select> 
      <option value=2001>2001</option> 
     </select> 
     <?php 
    ?> 

Это первое, что пользователь видит. Есть некоторый php-метод, который используется здесь как getClients(), он просто помещает некоторые вещи в мое падение.

<html> 
    <head> 
     <title>LeadQual Reporting</title> 
     <script language="javascript" src="../lqcharts/fusioncharts_js/FusionCharts.js"></script> 
     <script language="javascript" src="ajax.js"></script> 
    </head> 

    <body> 
     <div> 

      <form method='post' action='result.php'> 

       <select name ='client'> 
       <?php 
        $clients = ChartData::getClients(); 
        foreach($clients as $k){ 
         echo "<option value='$k'>$k</option>"; 
        } 
       ?> 
       </select> 
       <br/> 

       <select name="products" id="productsResult"> 
        <option> 
        <?php 
         $products = ChartData::getProducts(); 
         foreach($products as $p){ 
          echo "<option value='$p'>$p</option>"; 
         } 
        ?> 
        </option> 
       </select> 
       <br/> 

       <select name="vendors" id="vendorsResult"> 
        <option> 
        <?php 
         $vendors = ChartData::getVendors(); 
         foreach($vendors as $v){ 
          echo "<option value='$v'>$v</option>"; 
         } 
        ?> 
        </option> 
       </select> 
       <br/> 
       <select name="view" id="chooseView" onchange="showBoxes(this.value, document.getElementById('productsResult').value, document.getElementById('vendorsResult').value)"> 
        <option value=0>Select Option</option> 
        <option value=1>By Year</option> 
        <option value=2>By Month</option> 
        <option value=3>By Week</option> 
       </select> 

       <div id="yearSelect"> 

       </div> 

       <div id="monthSelect"> 

     </div> 

     <div id="weekSelect"> 

     </div> 

      </form> 
     </div> 
     <div> 
     </div> 
    </body> 
</html> 

ответ

0

я заметил в 2 ваших избранных списков у вас есть возможность в рамках вариантов

<select name="vendors" id="vendorsResult"> 
        <option> 
        <?php 
         $vendors = ChartData::getVendors(); 
         foreach($vendors as $v){ 
          echo "<option value='$v'>$v</option>"; 
         } 
        ?> 
        </option> 
       </select> 

Должно быть:

<select name="vendors" id="vendorsResult"> 
        <?php 
         $vendors = ChartData::getVendors(); 
         foreach($vendors as $v){ 
          echo "<option value='$v'>$v</option>"; 
         } 
        ?> 
       </select> 

Кроме того, я просто имел быстрое сканирование через ваш код, я не можете видеть, где вы нацеливаете div для вашего содержимого ajax: - | Если вы используете Firebug, плагин для Firefox, вы увидите, работает ли ваш вызов ajax.

также для вызова AJAX, почему вы не используете JQuery, один из которых делает ваш код понятным, два, вы можете выбрать, где вы хотите, чтобы ваш контент ajax появлялся.

http://api.jquery.com/category/ajax/

+0

спасибо, что указал, что вне =) – denniss

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