2017-03-16 51 views
1

我是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>"; 
    } 
?> 
+0

你说你正在尝试POST,但你正在使用GET。要使用jquery进行POST,你可以使用[$ .post](https://api.jquery.com/jquery.post/) – user2896976

+0

你必须有你的第一个选择名称 – yogesh84

+0

谢谢我忘了我只是添加它,但我得到id值然后名字值 – Mouhssine

回答

1

添加名称属性,在select[id="branddd"]而不是像options添加name="brand"select tag

​​

检查你的div被关闭后,您select[name="model"]。而添加required到选择框而不是它的option

而且在服务器端,你需要不呼应<select>再次尝试此而已,

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的情况下,你必须需要从<select id="branddd" onchange="change_brand()" required>删除onchange,并会成为像<select id="branddd" required>

+0

谢谢当我尝试第一个建议,我从我的表单行动第二下拉值得到的价值,但不是从第一个 – Mouhssine

+0

尝试我更新的答案,并在'品牌选择框'中添加'name'。它会解决你的问题。 –

+0

感谢您的努力,我只是做了它,但它给了我的品牌“ID”不是“名称”,所以即时试图呼应品牌“名称”我隐藏,看看我是否可以解决它 – Mouhssine