【发布时间】:2015-06-08 16:26:29
【问题描述】:
我正在尝试使用 ajax 在 php 中的另一个组合框基础上填充组合框。我创建了两个文件 category_dropdown.php 和 subcategory_dropdown.php。
我的 category_dropdown.php 文件如下。
<?php
include 'connect.php';
$q = mysql_query("select * from category") or die(mysql_error());
if (mysql_num_rows($q)) {
$data = array();
while ($row = mysql_fetch_array($q)) {
$data[] = array(
'id' => $row['category_id'],
'name' => $row['category_name']
);
}
header('Content-type : application/json');
echo json_encode($data);
}
我的 subcategory_dropdown.php 文件如下。
<?php
include 'connect.php';
if(isset($_GET["catname"])){
$c=$_GET["catname"];
$q= mysql_query("select * from subcategory where cat_id='$c'") or die(mysql_error());
if(mysql_num_rows($q)){
$data=array();
while($row= mysql_fetch_array($q)){
$data[]=array(
'id'=>$row['sub_id'],
'name'=>$row['sub_name'],
);
}
header('Content-type : application/json');
echo json_encode($data);
}else{
echo 'error';
}
}
然后我使用了 javascript 来填充组合框
<script type="text/javascript">
$(document).ready(function() {
Category();
$("#cat").change(function() {
var textbox3 = document.getElementById('cat');
val = textbox3.value;
Sub(val);
});
});
function Category() {
$('#cat').empty();
$('#cat').append("<option>Loading....</option>");
$('#subcat').append("<option>--Select SubCategory--</option>");
$.ajax({
type: "POST",
url: "category_dropdown.php",
contentTYpe: "application/json; charset=utf-8",
dataType: "json",
success: function(data) {
$('#cat').empty();
$('#cat').append("<option value='0'>--Select Category--</option>");
$.each(data, function(i, item) {
$('#cat').append('<option value="' + data[i].id + '">' + data[i].name + '</option>');
});
},
complete: function() {}
});
}
function Sub(catname) {
$('#subcat').empty();
$('#subcat').append("<option>Loading....</option>");
$.ajax({
type: "POST",
url: "subcategory_dropdown.php?catname=" + catname,
contentTYpe: "application/json; charset=utf-8",
dataType: "json",
success: function(data) {
$('#subcat').empty();
$('#subcat').append("<option value='0'>--Select SubCategory--</option>");
$.each(data, function(i, item) {
$('#subcat').append('<option value="' + data[i].id + '">' + data[i].name + '</option>');
});
},
complete: function() {}
});
}
</script>
但是当我运行这个函数时,我的第一个下拉框(category_dropdown.php)没有填满。它只显示“正在加载......”。
为什么会这样。我有问题的地方。 请帮忙。
【问题讨论】:
-
PHP 代码是否返回任何错误?您应该使用 JS 控制台来检查返回的内容并能够对其进行调试。
-
嗨,当我尝试运行 category_dropdown.php 时,它什么也没返回。输出为 null。我认为这是问题所在。你知道为什么会这样吗?
-
现在我收到一个错误“已弃用:mysql_connect():mysql 扩展已被弃用,将来将被删除”我在 stackoverflow 中阅读了一些关于此的文章。我很困惑,因为我使用了这个我计算机中另一个项目的相同代码。它运行良好。但这不是。怎么可能?
-
这里是关于弃用函数的解释:stackoverflow.com/questions/6822446/…。它不会阻止您的代码工作,但如果您升级 PHP 版本,这可能是一个问题。最好开始使用另一个功能/扩展。 stackoverflow.com/questions/12859942/…
标签: javascript php ajax