Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: для новичков > Динамические select'ы (AJAX)


Автор: ityler 28.1.2009, 16:03
Есть отличный код для динамического вывода данных select'ов с без перезагрузки.

Код используется для поиска объектов. Все прекрасно работает, НО хоть убейте не могу понять как сделать, чтобы при показе результатов поиска в select'ы автоматически показывались (selected) выбраные ранее опшены..

Код

function Inint_AJAX() {
   try { return new ActiveXObject(\"Msxml2.XMLHTTP\");  } catch(e) {} //IE
   try { return new ActiveXObject(\"Microsoft.XMLHTTP\"); } catch(e) {} //IE
   try { return new XMLHttpRequest();          } catch(e) {} //Native Javascript
   alert(\"XMLHttpRequest not supported\");
   return null;
};

function dochange(src, val) {
     var req = Inint_AJAX();
     req.onreadystatechange = function () { 
          if (req.readyState==4) {
               if (req.status==200) {
                    document.getElementById(src).innerHTML=req.responseText; //
               } 
          }
     };
     req.open(\"GET\", \"/js/location/locale_ofc.php?data=\"+src+\"&val=\"+val); //
     req.setRequestHeader(\"Content-Type\", \"application/x-www-form-urlencoded;charset=windows-1251\"); // set Header
     req.send(null); //
}

window.onLoad=dochange('region', -1); 



Код

   //
     header ("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
     header ("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
     header ("Cache-Control: no-cache, must-revalidate");
     header ("Pragma: no-cache");
     header("content-type: application/x-javascript; charset=windows-1251");
     $data=$_GET['data'];
     $val=$_GET['val'];

     //
$dbhost = "localhost";
$dbuser = "xxxxx";
$dbpass = "xxxxx";
$dbname = "xxxxx";
mysql_pconnect($dbhost,$dbuser,$dbpass) or die ("Unable to connect to MySQL server");  
     if ($data=='region') { 
          echo "<select name='region' onChange=\"dochange('district', this.value), dochange('metro', this.value), dochange('name', this.value)\">\n";
          echo "<option value=''>-----Выбрать-----</option>\n";
          $result=mysql_db_query($dbname,"SELECT location_ID, location_name FROM Classificator_location WHERE location_comment LIKE 'reg' order by location_name");
          while(list($id, $name)=mysql_fetch_array($result)){
               echo "<option value=\"$id\">$name</option> \n" ;
               }
          }
     
    if ($data=='district') {
          echo "<select name='district'>\n";
          echo "<option value=''>-----Выбрать-----</option>\n";
          $val2=$val;
          $val = substr($val,0,6);                                 
          $result=mysql_db_query($dbname,"SELECT location_ID, location_name FROM Classificator_location WHERE location_ID != '$val2' AND location_ID LIKE '$val%' AND location_comment LIKE 'disreg' ORDER BY location_name");
          while(list($id, $name)=mysql_fetch_array($result)){
               if ($id==$sel2){
               echo "<option value=\"$id\">$name</option> \n" ;
               }
          }
   
    
     
    else if ($data=='metro') {
          echo "<select name='metro'>\n";
          echo "<option value=''>-----Выбрать-----</option>\n";
          $val2=$val;
          $val = substr($val,0,6);                                 
          $result=mysql_db_query($dbname,"SELECT location_ID, location_name FROM Classificator_location WHERE location_ID != '$val2' AND location_ID LIKE '$val%' AND location_comment LIKE 'met' ORDER BY location_name");
          while(list($ID, $name)=mysql_fetch_array($result)){       
               echo "<option value=\"$ID\">$name</option> \n" ;
          }
     } 
      echo "</select>\n"; 
    

Автор: skyboy 28.1.2009, 16:31
Цитата(ityler @  28.1.2009,  15:03 Найти цитируемый пост)
чтобы при показе результатов поиска

сами результаты поиска тоже при помощи ajax выводятся или с перезагрузкой страницы? 
если при помощи ajax - не понятно, почему это состояние выбранных элементов сбрасывается и проблему надо искать в javascript-коде.
если поиск реализован с перезагрузкой страницы, значит, отправляется некая форма(<form>) на сервер, и в числе прочих данных - перечень выбранных значений в <select>. и следовательно, надо всего лишь подправить скрипт, формирующий результаты поиска, чтоб он формировал и список выбранных опций.

Автор: Aliance 28.1.2009, 16:40
Код

while ( list( $id, $name ) = mysql_fetch_array( $result ) )
{
    if ( $id == выбранный )
    {
        echo "<option value=\"$id\" selected=\"selected\">$name</option> \n" ;
    }
    else
    {
        echo "<option value=\"$id\">$name</option> \n" ;
    }
}


Сложно что-то более подробно сказать без HTML кода и SQL Dump.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)