0

再会 ,

我有 3 个 PHP 页面(' test1.php '、'res.php '、' desc.php '),所以我想做 3 个依赖下拉。所有下拉都依赖于先前的下拉。因此,当我从第一个下拉列表中选择一个项目时,所有数据都通过“ res.php ”从数据库中获取,并作为项目添加到第二个下拉列表中。但是当我选择第二个下拉菜单时,页面将刷新并返回到第一步,并且所有选择的下拉项目都消失了。

test1.php

<script>

function load_sub_cat(str){     

      var xmlhttp;
      xmlhttp=new XMLHttpRequest();
      xmlhttp.open("get","res.php?q="+str,false);

      xmlhttp.send();   

      document.getElementById("txtHint").innerHTML=xmlhttp.responseText;     

            }
  </script>

        <select name="users" onChange="load_sub_cat(this.value)">
        <option value="0">Select a restaurant</option>
   <?php

         $db->setQuery("SELECT id, name FROM yh5lw_rest_dropdown where active=1");
         $results = $db->loadObjectList();

         foreach ($results as $result) {

         echo "<option value=".$result->id.">". $result->name."</option>";

        }

  ?>

   </select>
   <div id="txtHint"></div>

资源库

 <script>
 function load_sub_cat(str){


     var xmlhttp1;
     xmlhttp1=new XMLHttpRequest();
     xmlhttp1.open("get","desc.php?desc="+str,false);
     xmlhttp1.send(); 
     document.getElementById("txt23").innerHTML=xmlhttp1.responseText;

 }
</script>

<select name="users1" onChange="load_sub_cat(this.value)">
    <option value="">Select a main course</option>
    <?php
    $q = intval($_GET['q']);

    $db->setQuery("SELECT price,id, nameEN , nameFA FROM yh5lw_food_dropdown where active=1 AND res_id ='".$q."'");
    $results = $db->loadObjectList();

    foreach ($results as $result) {
        echo "<option value=".$result->id.">". $result->nameEN." &nbsp; (".$result->price"</option>";
        }
        $count++ ;
    }
    ?>
    </select> 
    <div id="txt23"></div>

描述文件

<?php echo $_GET['desc'] ?>
4

1 回答 1

3

尽管您可以为此编写自己的代码,但您无需为此功能重新发明轮子 - 试试jQuery Cascading Dropdown Plugin,它是免费的,并且完全符合您的要求。它易于设置,支持 AJAX,而且您只需使用服务器端代码进行 AJAX 调用。

于 2013-11-14T21:23:03.200 回答