[英]php array in to a drop down box via AJAX
我有幾個下拉框。 我希望第一個選擇類別,然后對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;
}
之所以這樣做,是因為我希望將子類別保留在服務器端,並且易於更新而又不干擾代碼。 目前,這是將數組中的項目輸出到下拉框中,但它們是未定義的。 您能幫我將正確的值輸出到下拉框中嗎?
一件事是,如果您的選項的值和標簽相同,則無需使用帶有不必要鍵的'Europe' => "Europe"
設置數組。 像這樣設置數組
$subcategory = array("Europe", "North America", "South America");
然后在您的JS中,設置值和標簽,如下所示:
$.each(subresults, function (i, item) {
$('#subcategory').append('<option value="' + item + '">' + item + '</option>');
});
但是 ,如果您想像這樣保留單獨的值和標簽:
$subcategory = array('EU' => "Europe", 'NA' => "North America", 'SA' => "South America");
然后像下面這樣設置選項值和標簽:
$.each(subresults, function (i, item) {
$('#subcategory').append('<option value="' + i + '">' + item + '</option>');
});
不需要使用
subresults[i]
,因為您已經有值作為item
,它等於subresults[i]
。
在AJAX中,您需要subresults[i].id
和subresults[i].name
因此在定義PHP數組時必須使用以下結構:
if ($category == "World"){
$subcategory = array(
array('id' => "Europe", 'name' => "Europe"),
array('id' => "North America", 'name' => "North America"),
array('id' => "South America", 'name' => "South America")
);}
else if ($category == "Sport"){
$subcategory = array(
array('id' => "Football", 'name' => "Football"),
array('id' => "Rugby", 'name' => "Rugby"),
array('id' => "Cricket", 'name' => "Cricket")
); }
echo json_encode($subcategory);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.