【问题标题】:I can't post value from dynamic dependents dropdown list我无法从动态受抚养人下拉列表中发布价值
【发布时间】:2017-03-16 04:02:11
【问题描述】:

我是 jQuery 新手,遇到一个问题,我无法发布源自依赖动态下拉列表的值。

这是我写的代码:

index.php

<form name="form1" action="test.php" method="post">
<table>
    <tr>
        <td>
            <select id="branddd" onchange="change_brand()" required>
                <option disabled="disabled" selected="selected" style="color:gray" required >brand</option>
                <?php       
                $res=mysqli_query($link,"select * from brand");
                while($row=mysqli_fetch_array($res))
                {
                ?>
                <option name="brand" value="<?php echo $row["id"];?>"><?php echo $row["name"];?></option>
                <?php
                }   
                ?>
            </select>
        </td>
    </tr>
    <tr>
        <td>
            <div id="model">
            <select name="model">
                <option required>model</option>
            </select>
        </td>
    </tr>
    <tr>
        <td><input type="submit" value="submit"></td>
    </tr>
</table>

这是我编写的将数据从 MySQL 加载到第二个下拉框的 JavaScript:

<script type="text/javascript">
function change_brand()
{

    var xmlhttp=new XMLHttpRequest () ;
    xmlhttp.open("GET","ajax.php?  brand="+document.getElementById("branddd").value,false) ;
    xmlhttp.send(null) ;
    document.getElementById("model").innerHTML=xmlhttp.responseText ;

}
</script>

ajax.php

<?php
    $link=mysqli_connect("localhost","root","");
    mysqli_select_db($link,"test_db");
    $brand=$_GET["brand"];

    if($brand!="")
    {
        $res=mysqli_query($link,"select * from model where brand_id=$brand");
        echo "<select>";
        while($row=mysqli_fetch_array($res))
        {
            echo "<option>"; echo $row["name"]; echo "</option>";
        }
        echo "</select>";
    }
?>

【问题讨论】:

  • 您说您正在尝试发布但您正在使用 GET。要使用 jquery 发布,您可以使用 $.post
  • 你必须有你的第一个选择的名字
  • 谢谢我忘了我只是添加它,但我得到 id 值然后是 name 值

标签: php jquery ajax post


【解决方案1】:

select[id="branddd"] 中添加名称属性 并将name="brand" 添加到select tag 而不是options 之类的,

<select id="branddd" name="brand" ...

检查你的 div 在你的select[name="model"] 之后关闭。并将required 添加到选择框而不是其option

并且在服务器端你不需要回显&lt;select&gt; 再次尝试这个,

while($row=mysqli_fetch_array($res))
{
   echo "<option>".$row["name"]."</option>";
}

并将 id 添加到 select 而不是 div

如果您使用的是 jquery,那么您的 onchange 事件可能会很短,

$(function(){
    $('#branddd').on('change',function(){
        this.value && // if value!="" then call ajax
           $.get('ajax.php',{brand:this.value},function(response){
            $('select[name="model"]').html(response);
        });
    });
});

如果使用 jquery,您必须需要从 &lt;select id="branddd" onchange="change_brand()" required&gt; 中删除 onchange,就像 &lt;select id="branddd" required&gt; 一样

【讨论】:

  • 感谢当我尝试第一个建议时,我从表单操作的第二个下拉列表中获得了价值,但不是从第一个下拉列表中获得了价值
  • 试试我更新的答案并在您的brand select box 中添加name。它会解决你的问题。
  • 感谢您的努力,我刚刚做到了,但它给了我品牌“id”而不是“名称”,所以我试图在我隐藏的 上呼应品牌“名称”,看看我是否可以解决
  • 不要删除id,而是像&lt;select id="branddd" name="brand" ...一样添加name。请参阅我的更新答案。
  • 这就是我在表单操作中所做的,我得到了品牌“id”和型号“name”,我认为这是因为 ,所以我得到值然后是名称
猜你喜欢
  • 1970-01-01
  • 2013-12-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-01-30
  • 2019-04-07
  • 2014-06-23
  • 2013-06-14
相关资源
最近更新 更多