Пожалуйста, помогите мне с этим ajax / javascript / php - PullRequest
0 голосов
/ 27 июля 2010

Я пытаюсь создать связанный список здесь. Я хочу, чтобы пользователь выбрал что-то в первых 4 выпадающих списках, и как только последний будет выбран, должен появиться другой. Я просто сейчас тестирую свой код, и по какой-то причине мои коды не показывают выпадающий список, который должен отображаться при изменении последнего ввода.

Это мой java-скрипт

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. Сейчас это очень просто, он просто возвращает теги выбора.

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

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

<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>

1 Ответ

0 голосов
/ 27 июля 2010

Я заметил, что в 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/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...