Ajax没有填充多个下拉列表

时间:2018-03-25 23:48:43

标签: php ajax html5 dropdown

因此,我尝试为后端填充类别,子类别和供应商下拉菜单,并尝试使用ajax。当我选择一个类别时,子类别不会填充,也没有控制台错误。

dropdown.js

$(document).ready(function() {

$(document).on('change','#catid', function() {
var catid = $(this).val();
if(catid != "") {
  $.ajax({
    url:"get_data.php",
    type:'POST',
    data:{catid:catid},
    success:function(response) {
      //var resp = $.trim(response);
      if(response != '') {
        $("#subcatid").removeAttr('disabled','disabled').html(response);
        $("#vendorid").attr('disabled','disabled').html("<option value=''>------- Select --------</option>");
      }
      else $("#subcatid, #vendorid").attr('disabled','disabled').html("<option value=''>------- Select --------</option>");
    }
  });
} else {
  $("#subcatid, #vendorid").attr('disabled','disabled').html("<option value=''>------- Select --------</option>");
}


});

  $(document).on('change','#subcatid', function() {
      var subcatid = $(this).val();
      if (subcatid != "") {
      $.ajax({
        url:"get_data.php",
        type:'POST',
        data: { subcatid: subcatid},
        success:function(response) {
        if (response != '') 

$("#vendorid").removeAttr('disabled','disabled').html(response);
        else $("#vendorid").attr('disabled','disabled').html("<option value=''>------- Select --------</option>");
        }
      });
    } else {
        $("#vendorid").attr('disabled','disabled').html("<option value=''>------- Select --------</option>");
    }
  });
});

我不确定这段代码是否完全正确,因为我试图将我的代码从sqli转换为PDO,这可能会破坏代码,但我不确定这是不是因为js仍然没有&#39;似乎做出了任何改变。 get_data.php:

<?php 
include_once "../header.php";

if (isset($_POST['catid'])){
$sql = "select * from subcategories where catid =" . $_POST['catid'];    

$stmt = $pdo->prepare($sql);
$stmt->execute();
$data = $stmt->fetch();
$stmtCount = $stmt->rowCount();
$result = $stmt->fetch(PDO::FETCH_ASSOC);

if ($stmtCount >= 1) {
    echo 'option value="">------- Select -------</option>';


    foreach ($result as $row) {
        echo "<option value='" . $row['subcatid'] . "'>" . 
$row['subcatname'] . "</option>";
    }

} else {
    echo '<option value="">No Record</option>';
}

} else if (isset($_POST['subcatid'])) {
$sql = "select * from vendors where subcatid =" . $_POST['subcatid'];

$stmt = $pdo->prepare($sql);
$stmt->execute();
$data = $stmt->fetch();
$stmtCount = $stmt->rowCount();

if ($stmtCount >= 1) {
    echo 'option value="">------- Select -------</option>';
    $result = $stmt->fetchAll(PDO::FETCH_ASSOC);

    foreach ($result as $row) {
        echo "<option value='" . $row['vendorid'] . "'>" . $row['vendorid'] 
. "</option>";
    }

} else {
    echo '<option value="">No Record</option>';
}
}

?>

3 个答案:

答案 0 :(得分:1)

它可能与响应有关,请确保您的PHP脚本没有丢失任何错误,因为它们将成为响应的一部分,您应该首先通过console.log()测试您的PHP文件 - 响应,这样你就可以看到发生了什么。

{{1}}

另外,我看到你期待文本响应,如果是这样,你应该在ajax参数上指定:

{{1}}

Andrew Chart所说的也值得一试。

希望它有所帮助。

答案 1 :(得分:0)

尝试引用AJAX数据中的密钥:

data: { "subcatid" : subcatid },

答案 2 :(得分:0)

尝试使用chrome devtools中的“network”选项卡检查ajax是否正在将数据发送到php文件,并检查php文件响应。 首先检查请求是否正在完成,然后检查print_r($ _ POST)您要发送的数据是否是php文件正在接收的数据,最后检查php是否正在打印您想要的内容。