2012-04-23 17 views
0

私は選択された前回のドロップダウン値に応じていくつかのドロップダウンメニューを作成しています。HTMLドロップダウンメニューにAJAX結果を表示するには

これまでのところ、ajaxを使用してPHPスクリプトからデータを取得することはできましたが、そのデータをAREASという2番目のドロップダウンリストに追加する方法はわかりません。

HTML/Javascript/AJAX 
    <html> 
    <head> 
     <title>IPSLA Report</title> 
    <script type="text/javascript"> 
    function changeSelections() { 
     var departments = document.selections.department; 
     var areas = document.selections.areas; 
     var months = document.selections.months; 
     var years = document.selections.years; 
     var s = document.getElementById("department"); 

     switch(departments.selectedIndex) { 
     case 0: 
      areas.options.length = 0; 
      months.options.length = 0; 
      years.options.length = 0; 

      areas.options[0] = new Option("Select an Area"); 
      months.options[0] = new Option("Select a Month"); 
      years.options[0] = new Option("Select a Year"); 
      departments.options[0].selected = true; 
      break; 

     default: 
      months.options.length = 0; 
      years.options.length = 0; 

      months.options[0] = new Option("Select a Month"); 
      years.options[0] = new Option("Select a Year"); 

      var pass = s.options[s.selectedIndex].text; 
      ajaxFunction(pass); 
     } 

    } 


    function ajaxFunction(pass) { 

    var ajaxRequest; 
     try { 
     ajaxRequest = new XMLHttpRequest(); 
     } 
     catch(e) { 
     try { 
      ajaxRequest = new ActiveXObjext("Msxml2.XMLHTTP"); 
     } 
     catch(e) { 
      try { 
      ajaxRequest = new ActiveXObjext("Microsoft.XMLHTTP"); 
      } 
      catch(e) { 
      alert("Please use another browser"); 
      return false; 
      } 
     } 
     } 
     ajaxRequest.onreadystatechange = function() { 
     if (ajaxRequest.readyState == 4) { 
      var ajaxDisplay = document.getElementById("areas"); 
      if (ajaxDisplay != null) { 
      ajaxDisplay.options.selectedIndex.text = ajaxRequest.responseText; 
      } 
      else { 
      document.write("NULL!!!"); 
      } 
     } 
     } 

     if (pass == "CRAN") { 
     var active_id = '0'; 
     } 

     var queryString = "?active_id=" + active_id; 
     ajaxRequest.open("GET","db_connect.php" + queryString, true); 
     ajaxRequest.send(null); 

    } 
    </script> 
    </head> 
    <body> 
    <div id="wrapper"> 
     <div id="select"> 
     <form name="selections" id="selections" action=""> 
      <select name="department" id="department" onChange="changeSelections()"> 
      <option value="none">Select Department</option> 
      <option value="none">CRAN</option> 
      <option value="none">BackBone</option> 
      <option value="none">Datacenter</option> 
      <option value="none">Enterprise</option> 
      </select> 


      <select name="areas" id="areas" onChange="changeMonth()"> 
      <option value="none">Select an Area</option> 
      </select> 

      <select name="months" id="months" onChange="changeYear()"> 
      <option value="none">Select a Month</option> 
      </select> 

      <select name="years" id="years" onChange="go(this)"> 
      <option value="none">Select a Year</option> 
      </select> 
     </form> 
     </div> 


     <div id="image"> 

     </div> 


     <div id="incidents"> 

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

PHP Script 
<?php 
    $host = ""; 
    $dbName = ""; 
    $username = ""; 
    $password = ""; 

    $conn = mysql_connect($host,$username,$password); 
    $db = mysql_select_db($dbName,$conn); 

    $dept_id = $_GET['id']; 

    $area_query = "SELECT area_name FROM incident_area WHERE FK_dept= '$dept_id'"; 
    $area_result = mysql_query($area_query); 

$options = ""; 
    while ($area_row = mysql_fetch_assoc($area_result)) { 
    #$options .= '<option value="'.$area_row['area_name'].'">'.$area_row['area_name'].'</option>'; 
     $options .= $area_row['area_name']; 
    } 
echo $options; 

?> 
~ 

だから、基本的に私はちょうどメニュー「エリア」ドロップダウンにAJAXによって収集された値を追加する方法を知っておく必要があります。

+0

生の 'XMLHttpRequest'はありません。強くお勧めするjQueryです。 –

+0

@SiweiShen - jQueryの同等機能は何ですか?私を指すことができるリソース? – jmg0880

+0

Googleの公式ウェブサイトには、多くの文書があります。 http://api.jquery.com/jQuery.ajax/を参照してください。まず、セレクタがどのように動作しているのかを確認し、次に 'ajax'メソッドをチェックアウトします。非常に簡単です。 –

答えて

1

このsiteは私に大きな助けになりました。またhereです。 Jqueryは行く方法です。それは、HTMLにデータを追加し、あなたが探している動的なドロップダウンを作成することができます。

Javascript 
// needs hotlink to jquery file, for library to work right. 
var options = ""; 
$(document).ready(function(){ 
    $.post("./file.php", { postVariableInPHPFile: "some string" }, function(data) { 
     options = data; // data is the return from the AJAX call 
    }); 
}); 

あなたがPHPの呼び出しから期待しているデータの量に応じて、あなたは完全なリストを取得することを好む、これまでどのようにあなたの結果を連結する必要があります。

+0

サーバーに送信されるデータを選択した項目のテキストに設定できますか? 'var $ data = $( '分野オプション:選択')。テキスト(); data:$ data' – jmg0880

+0

はい、ドロップダウンのクリック機能が必要です。あなたは2つの異なることをしようとしています.1つはajaxからドロップダウンを作成し、選択はajaxにデータとして送信します。以前のドロップダウンから選択を送信している場合を除きます。 dropdown1で何らかの選択肢が生成されていますか - >その選択をデータとしてAjaxに送信して次のドロップダウンを作成しますか? また、jsの変数declerationをPHP と混同しています。javascript:var varName = "string"; php:$ varName = "string"; –

+0

ユーザーがドロップダウンから何かを選択する1 - >選択テキストがPHPに送信され、2番目のドロップダウンにデータを集めるために使用 - >ユーザーがドロップダウン2 - > etc ...などから選択したもの – jmg0880

関連する問題