【发布时间】:2015-12-28 23:03:02
【问题描述】:
我有几个下拉框。我希望第一个选择类别,然后对 PHP 文件进行 AJAX 调用,该文件选择适当的子类别数组并将其返回到第二个下拉列表。代码如下:
带有子类别的 PHP 文件:
$category = $_POST['category'];
if ($category == "World"){
$subcategory = array('Europe' => "Europe", 'North America' => "North America", 'South America' => "South America");}
else if ($category == "Sport"){
$subcategory = array("Football , Football", "Rugby , Rugby", "Cricket , Cricket"); }
echo json_encode($subcategory);
AJAX
function getsub(category, subcategory) {
var category = document.getElementById('category').value;
$('#subcategory').empty();
$('#subcategory').append("<option>loading...</option>");
//kicking off AJAX
$.ajax({
url: "../php/subcategory.php",
type: "POST",
async: true,
//this is where we define the data that we will send
data: {
category: category,
},
success: function (subresults) {
var subresults = JSON.parse(subresults);
$('#subcategory').empty();
$('#subcategory').append("<option value='0'>----Select Sub Categry---</option>");
$.each(subresults, function (i, item) {
$('#subcategory').append('<option value="' + subresults[i].id + '">' + subresults[i].name + '</option>');
});
},
});
return false;
}
我这样做的原因是因为我想将子类别保留在服务器端并且易于更新而无需干预代码。目前,这是将数组中的项目输出到下拉框中,但它们是未定义的。你能帮我把正确的值输出到下拉框吗?
【问题讨论】:
-
您的 AJAX 调用有效吗?向我们展示一些在您的 AJAX 调用中返回的示例数据(
console.log(subresults)在您在成功函数中解析它们之前) -
您是否在 php 代码中使用了
echo json_encode($subcategory);? -
您的 php 数组中没有
id和name键。你应该改成subresults[i]。 -
当我控制台日志 {"Europe":"Europe","North America":"North America","South America":"South America"}
-
刚刚注意到我会删除 echo json_encode($subcategory);关闭 php 代码的底部。
标签: javascript php arrays ajax