Jquery ajax数据相关选择

Jquery ajax数据相关选择,jquery,ajax,post,Jquery,Ajax,Post,我试图通过ajax post将一个select的值发送给另一个select,实际上我在idf中获取该值,但不在数据中,使用console.logdata我获取页面的所有html <script> $(document).ready(function () { $('#specialite_id').change(function(){ var idf=$(this).val(); //var $id=$(this).serialize(); event.prev

我试图通过ajax post将一个select的值发送给另一个select,实际上我在idf中获取该值,但不在数据中,使用console.logdata我获取页面的所有html

<script>
$(document).ready(function () {

$('#specialite_id').change(function(){
   var idf=$(this).val();
    //var $id=$(this).serialize();
   event.preventDefault();
    $.ajax({
       url : "index.php",
       type : "POST",
       data:'idf='+idf,
      datatype: "text",
       success : function(data){
           $('#section').html(data); 

          console.log(data);
       },

       error : function(){

       }
    });

});
})
</script>
以下是html:

<select id="specialite_id">
    <?php   foreach( $rowAll as $row )
        { 

            ?>

<option value=<?php echo $row['id_specialite']; ?> > <?php echo $row['specialite']; ?> </option>

<?php 
}

?>
</select>


<select id="section">
     <?php 

    if(isset($_POST['idf'])){
    //$idf = $database->escape_string($_POST['idf']);

    $idf=$_POST['idf'];
     if(!empty($idf)){


    $sql3 = "SELECT section FROM section where id_specialite=:idf ";

        $stmt3 = $connexion->prepare($sql3);
        $stmt3->BindParam(':idf',$idf);
 $stmt3->execute( );
    $rowAll3 = $stmt3->fetchAll(PDO::FETCH_BOTH);
foreach( $rowAll3 as $row3)
        { 


     ?> 

     <option > <?php echo $row3['section']; ?> </option>
     <?php } ?>
</select>

为什么它不起作用。。。有人有想法吗?

我认为您传递的json格式错误,请尝试以下操作:

  data:"{'idf':"+idf+"}",

我无法将值发送到同一页面,因此我创建了一个新页面fetch.php:

 $sql2 = "SELECT * from section where id_specialite =:idf ";

        $stmt2 = $connexion->prepare($sql2);
        $stmt2->BindParam(':idf',$_POST["idf"]);
        $stmt2->execute( );
        $rowAll2= $stmt2->fetchAll(PDO::FETCH_BOTH);
        $output='<option value="">'.$_POST["idf"].'</option>';
    foreach( $rowAll2 as $row2)
        { 

          $output ='<option value="'.$row2["id_section"].'">'.$row2["section"].'</option>';
    echo $output;
     } 
我更改了脚本的代码:

<select id="section" name="section">

     <option value=" "> selectioner section </option>

</select>



</form>

<script>
$(document).ready(function () {
$('#specialite_id').change(function(){
   var idf=$(this).val();
  console.log(idf);
    $.ajax({
       url : "fetch.php",
       type : "POST",
       data:{idf:idf},
      datatype:"text",
       success:function(data){
           $('#section').html(data); 
           console.log(data);
       }


    });

});
})
</script>
它起作用了

有关更多信息:

获取这些数据需要一个单独的脚本,而不仅仅是调用index.php。否则是的,它当然会返回整个页面。您可以通过使用if语句来防止它,该语句表示是否有idf的POST值,然后不返回除字段之外的任何内容。但是这是两个不同功能的错误分离,如果你在页面上添加更多的ajax,你最终只会得到意大利面代码。我只是在测试ajax功能。。。我和codeigniter一起工作,我会分开。。但是如何确定我只需要select返回的值呢?您可以通过使用if语句来实现,正如我前面提到的。这只会生成一个字符串作为post变量,这不会起作用,特别是因为内容类型没有设置为JSON,服务器也没有尝试解码JSON。