如何在php中的多个下拉菜单中使用AJAX


How to use AJAX in multiple drop down in php?

我知道这是一个愚蠢的问题,但我对AJAX和我尝试了很多从网上得到的代码,但仍然无法完成这件简单的事情所以我终于在这里发布了我的问题出现问题,当我在第一个下拉列表中选择选项时什么都没发生数据库表名为sub_menu,其字段如下id,sub_item_name,item_name,price

这是我放在additem.php文件上的脚本

    <script>
         function showSubItem(sel) {
    var item_name = sel.options[sel.selectedIndex].value;  
    $("#subItemTr").html( "" );
    if (item_name.length > 0 ) {
 $.ajax({
        type: "POST",
        url: "subitem.php",
        data: "item_name="+item_name,
        cache: false,
        success: function(html) {    
            $("#subItemTr").html( html );
        }
    });
}
}
</script>

他是我的两个下拉菜单都是表格形式我的主菜单仍在工作,并显示数据库中的所有选项,所以我不会发布此处为

    <tr>
  <td width="251">Select Master Menu Name</td>
  <td width="47">:</td>
  <td width="342"><select name="iname" id="iname" class="form-control" onChange="showSubItem(this);">
  <option selected="selected">Select Main Menu</option>
  <?php
    $abc = "select * from main_menu";
    $lkg = mysql_query($abc);
    while($ukg = mysql_fetch_row($lkg))
    {
  ?>
  <option><?php echo $ukg[1]; ?></option>
  <?php } ?>
  </select>      </td>
</tr>
<tr>
  <td width="251">Sub Item Name</td>
  <td width="47">:</td>
  <td width="342" id="subItemTr" ><select name="subname" id="subname" class="form-control">
  <option selected="selected">Select Sub Item</option>
  </select></td>
</tr>

这是我的子项.php文件代码,如下所示

    <?php
    include 'config.php';
    $item_name = ($_POST["item_name"] <> "") ? trim( addslashes($_POST["item_name"])) : "";
    if ($country_id <> "" ) { 
    $sql = "SELECT * FROM sub_menu WHERE item_name = ".$item_name ." ORDER BY sub_item_name";
    $count = mysql_num_rows( mysql_query($sql) );
    if ($count > 0 ) {
    $query = mysql_query($sql);
    ?>
    <select name="sub_item">
       <option value="">Please Select</option>
     <?php while ($rs = mysql_fetch_array($query)) { ?>
       <option><?php echo $rs["item_name"]; ?></option>
    <?php } ?>
    </select>
    <?php 
      }
    }
    ?>

这应该是

<option><?php echo $rs["item_name"]; ?></option>

<option value="<?php echo $rs["item_id"]; ?>"><?php echo $rs["item_name"]; ?></option>

我给出了$rs["item_id"];无论你想在价值领域修复它。

此外,

也更改这一行

您的selectbox选项应该具有值属性。直到您的条件if (item_name.length > 0 ) {应该失败。

  <option><?php echo $ukg[1]; ?></option>

应该是

  <option value="<?php echo YOUR_VALUE ?>"><?php echo $ukg[1]; ?></option> 

  <option><?php echo $rs["item_name"]; ?></option>

应该是

 <option value="<?php echo YOUR_VALUE ?>"><?php echo $rs["item_name"]; ?></option>

此外,当前您正在按值发送对象。

<select name="iname" id="iname" class="form-control" onChange="showSubItem(this);">

应该是

<select name="iname" id="iname" class="form-control" onChange="showSubItem(this.value);">

因此,您可以直接从变量sel 访问所选值

var item_name = sel;

您没有在subitem.php文件中定义$country_id,这就是代码无法在if语句中执行的原因。您可以为$country_id定义一些内容,或者在不必要的情况下删除该条件。然后它将工作

示例:

<?php
    include 'config.php';
    $country_id = 'something';
    $item_name = ($_POST["item_name"] <> "") ? trim( addslashes($_POST["item_name"])) : "";
    if ($country_id <> "" ) { 
    $sql = "SELECT * FROM sub_menu WHERE item_name = ".$item_name ." ORDER BY sub_item_name";
    $count = mysql_num_rows( mysql_query($sql) );
    if ($count > 0 ) {
    $query = mysql_query($sql);
    ?>
    <select name="sub_item">
       <option value="">Please Select</option>
     <?php while ($rs = mysql_fetch_array($query)) { ?>
       <option><?php echo $rs["item_name"]; ?></option>
    <?php } ?>
    </select>
    <?php 
      }
    }
    ?>