За последние 24 часа нас посетили 17574 программиста и 1649 роботов. Сейчас ищут 858 программистов ...

Интерактивный select с помощью ajax

Тема в разделе "JavaScript и AJAX", создана пользователем Anneta, 6 фев 2011.

  1. Anneta

    Anneta Активный пользователь

    С нами с:
    7 окт 2010
    Сообщения:
    4
    Симпатии:
    0
    Здравствуйте! Помогите пожалуйста разобраться.
    Я хочу связать два выпадающих списка с помощью ajax используя библиотеку JsHttpRequest, что бы было без перезагрузки. Попыталась сделать по примеру: http://pyha.ru/articles/php/ajax-select-jshttprequest/

    структуры используемых таблиц:
    table style
    `id_style` int(8) unsigned NOT NULL AUTO_INCREMENT,
    `name` varchar(50) NOT NULL,
    PRIMARY KEY (`id_style`)

    table genre
    `id_genre` int(8) unsigned NOT NULL AUTO_INCREMENT,
    `name` varchar(50) NOT NULL,
    `id_style` int(8) unsigned DEFAULT NULL,
    PRIMARY KEY (`id_genre`)

    index.php
    PHP:
    1. <?php
    2. require("mysql.php");
    3. require_once("Smarty/Smarty.class.php");
    4. $smarty = new Smarty();
    5. $style = array();
    6. $query_style = "SELECT * FROM style ORDER BY id_style";
    7. $sql = mysql_query($query_style) or die(mysql_error(''));
    8. while ($row = mysql_fetch_assoc($sql)) {
    9.     $style[] = $row;
    10. }
    11. $smarty->assign('style',$style);
    12. $smarty->display("main.tpl");
    13. ?>
    шаблон smarty
    HTML:
    1.   <head>
    2.     <title>пример</title>
    3.  
    4.   </head>
    5.   <body>
    6. <script type="text/javascript" src="../lib/JsHttpRequest.js"></script>
    7.  {literal}     
    8. function doload(value){
    9. var req=new JsHttpRequest();
    10. req.onreadystatechange=function(){
    11. if(req.readyState==4) document.getElementById("result").innerHTML=req.responseText;}
    12. req.open(null,"select2.php",true);
    13. req.send({style:value});}
    14.  {/literal}
    15.  </script>
    16.     {*Выводим список style*}
    17.     <select name="style" id="style"  onchange="doload(this.value);">
    18.         <option value="">-select style-</option>
    19.         {foreach name="style" from=$style item="style"}
    20.             <option value="{$style.id_style}">{$style.name}</option>
    21.         {/foreach}
    22.     </select>
    23.     <div id="result"></div>
    24.   </body>
    25. </html>
    Скрипт, который передает данные( пробовала вписать его в index.php, все равно ни чего не работает )
    PHP:
    1. <?
    2. require("../lib/JsHttpRequest.php"); //Подключаем библиотеку
    3. $JsHttpRequest=new JsHttpRequest("utf-8");
    4. if  (!empty ($_REQUEST["style"])){
    5.  
    6.     $id_style = $_REQUEST["style"];
    7.     $genre = array();
    8.     $query = "SELECT * FROM genre WHERE id_style='$id_style'";
    9.     $sql = mysql_query($query) or die(mysql_error(''));
    10.     $html="<select name=\"genre\">";
    11.     while ($row = mysql_fetch_assoc($sql)) {
    12.     $html.="<option value=\"".$row['id_genre']."\">".$row['name']."</option>";
    13.  
    14.     }
    15. echo $html.="</select>";
    16. }
    17. ?>
    Заранее всем большое спасибо за помощь...
     
  2. Benjamin

    Benjamin Активный пользователь

    С нами с:
    23 янв 2009
    Сообщения:
    154
    Симпатии:
    0
    Адрес:
    Тула
    Попробуйте реализовать без Smarty.