因此,我尝试为后端填充类别,子类别和供应商下拉菜单,并尝试使用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>';
}
}
?>
答案 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是否正在打印您想要的内容。