【问题标题】:How to use AJAX in multiple drop down in php?如何在php的多个下拉菜单中使用AJAX?
【发布时间】:2014-09-03 13:26:45
【问题描述】:

我知道这是一个愚蠢的问题,但我是 AJAX 新手,并且 我尝试了许多从互联网上获得的代码,但仍然无法完成这个简单的事情 所以最后我在这里发布我的问题 出了点问题,当我在第一个下拉列表中选择选项时 没发生什么事 数据库表名为 sub_menu 字段如下 id,sub_item_name,item_name,价格

这是我放在 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>

这是我的 subitem.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 
      }
    }
    ?>

【问题讨论】:

  • AJAX 调用是否正在执行?如果有,服务器的响应是什么?
  • @Ninsly 如何检查它的执行与否......当我在第一个复选框中选择任何值时,第二个复选框就会消失......所以我猜它会转到 subitem.php 但我不知道如何检查我传入的值是否进入该 subitem.php 页面
  • 如果您使用的是普通浏览器,它应该有开发工具(通常可以通过按 F12 来切换)。应该有一个网络或网络选项卡,您可以在其中跟踪请求。
  • 我检查了选项卡 Network 并将方法更改为 GET... 这是附加在 url subitem.php?item_name=1&_=1409753659406 末尾的值,这就是我从开发工具中得到的我也检查了响应选项卡,但该选项卡中没有数据......
  • 如果将方法更改为GET,则$_POST 数组将为空。当它是POST 时是什么响应?

标签: javascript php jquery mysql ajax


【解决方案1】:

这应该

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

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

我给了 $rs["item_id"];你想要的任何字段值都可以修复它。

还有,

也改变这一行

【讨论】:

  • 我仍然不明白给出 value=id 是否会有所帮助,以及它将如何帮助......但我还是这样做了,但仍然没有得到任何输出......谢谢你的重播反正
【解决方案2】:

您的选择框选项应该具有值属性。直到您的条件 if (item_name.length &gt; 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;

【讨论】:

  • 我不知道这会有什么帮助,但我还是这样做了,但仍然无法正常工作
  • 我 @RajivRisi 尝试使用 this.value 和 item_name=sel 但当我在第一个下拉列表中选择任何值时,第二个值仍然消失并且什么也不显示
  • 检查来自 subitem.php 的响应。您从该文件中得到错误的输出。所以它被旧的选择框覆盖了。
  • 试图直接在浏览器中打开 subitem.php,但没有输出,我也尝试在 url 中传递值,但我没有得到任何输出,所以我不知道出了什么问题..
  • 将 $_POST["item_name"] 更改为 $_REQUEST["item_name"] 或 $_GET["item_name"]
【解决方案3】:

您没有在 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 
      }
    }
    ?>

【讨论】:

  • 实际上@user787669 这是我在此处粘贴代码的错误...它的 $item_name 我更改了它,但它仍然无法正常工作
猜你喜欢
  • 1970-01-01
  • 2021-12-09
  • 2013-01-20
  • 1970-01-01
  • 1970-01-01
  • 2014-02-20
  • 2018-10-30
  • 1970-01-01
  • 2012-01-12
相关资源
最近更新 更多