我得到了ajax的空白回复,任何人都可以告诉我我错在哪里

时间:2017-06-17 11:46:11

标签: php jquery ajax

这是我的代码我希望我的第二个选项列表在选择第一个列表时从数据库中提取数据。

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
<script>
$(document).ready(function () {
$('#category').change(function(){
   var id=$(this).val();


   $.ajax({
       type:'post',
       url:'get_select.php',
       data:{'id':id},
       cache:false,
       success:function (html) {
           $("#type").html(html);
       }
   });
});
});
</script>

<form method="post" action="">
<label>Category :</label><br>
<select id="category" name="category" class="form-control">
    <?php
    $host = "localhost";
    $username = "root";
    $password = "mysql";
    $database = "crm";
    $conn = new PDO("mysql:host=$host;dbname=$database", $username, $password);


    $sql1 = $conn->prepare("SELECT list_name from links_list ");
    $sql1->execute();

    while ($data1 = $sql1->fetch(PDO::FETCH_ASSOC)) {
        ?>
        <option value="<?php echo $data1['list_name']; ?>"><?php echo $data1['list_name']; ?></option>
        <?php
    }

    ?>
</select><br><br>
<label>Types :</label><br>
<select id="type" name="type" class="form-control">
    <option value="0">-select-</option>
</select><br><br>
</form>

get_select.php

    $host = "localhost";
    $username = "root";
    $password = "mysql";
    $database = "crm";
    $conn = new PDO("mysql:host=$host;dbname=$database", $username, $password);

    $cn = $_POST['id'];
    $sql1 = $conn->prepare("SELECT id from links_list where 
    list_name='$cn'");
    $sql1->execute();

    while ($data1 = $sql1->fetch(PDO::FETCH_ASSOC)) {
        $link = $data1['id'];
        echo'<option value="'.$link.'">'.$link.'</option>';
       }

我希望在第一个被选中时获得第二个列表项,取决于第一个,第二个列表应该,在我的代码中ajax响应来自blanlk

4 个答案:

答案 0 :(得分:0)

来自您更新的代码我认为您在 get_select.php 中遇到了问题。在查询中,您选择links并在while循环中使用id,因此您需要在此处进行更改:

$host = "localhost";
    $username = "root";
    $password = "mysql";
    $database = "crm";
    $conn = new PDO("mysql:host=$host;dbname=$database", $username, $password);

    $cn = $_POST['id'];
    $sql1 = $conn->prepare("SELECT id from links_list where 
    list_name='$cn'"); //<-----------select id or you can change field name
    $sql1->execute();

    while ($data1 = $sql1->fetch(PDO::FETCH_ASSOC)) {
        $link = $data1['id']; //<-----------use id or use whatever you are selecting
        echo'<option value="'.$link.'">'.$link.'</option>';
       }

答案 1 :(得分:0)

在javascript中

data:dataString, 

data:{'id':id},

在php中

 $link = $data1['id'];

$link = $data1['links'];

答案 2 :(得分:0)

您有3阶段诊断。

  1. 验证您的数据是否在第一组选项中正确填充。

  2. 接下来,验证是否已调用onchange方法。

  3. 之后检查get_select.php是否显示正确的结果。

  4. 验证每个阶段并检查结果是否有效。我们很难对此进行验证,因为我们不知道第一组PHP调用的结果。此外,如果您在get_select.php中的数据库调用与您要发送的内容不匹配,则仍会获得空数据。

    检查每个阶段,看看结果是否按预期进行。

    这个答案将帮助您诊断此类未来的问题。

答案 3 :(得分:0)

这可能不是解决方案。但它会纠正你的一些错误

1:选项应该像$("#type").append(html);

一样追加

2:并且还添加了ajax错误处理程序。

$.ajax({
       type:'post',
       url:'get_select.php',
       data:{id:id},
       cache:false,
       success:function (html) {
           $("#type").empty();
           $("#type").append(html);
       },
       error:function(request,string_error,error){
           alert(string_error);
       }

   });

3:而不是在while循环内回显。像while这样循环后连接和回显

  $concat ="";
  while ($data1 = $sql1->fetch(PDO::FETCH_ASSOC)) {
      $link = $data1['id'];
      $concat.= '<option value="'.$link.'">'.$link.'</option>';
  }
   echo $concat;