2015-12-28 68 views
0

我有幾個下拉框。我希望第一個選擇類別,然後對PHP文件執行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; 
} 

的原因,我這樣做是因爲我想保留的子類別在服務器端,並且易於更新而無需干涉代碼。目前,這是將數組中的項目輸出到下拉框中,但它們未經定義即將通過。你能幫我把正確的值輸出到下拉框中嗎?

+3

請問您的AJAX調用的工作?向我們展示一些示例數據,因爲它在您的AJAX調用('console.log(subresults)')中返回,然後在您的成功函數中解析它們) –

+1

您在執行'echo json_encode($ subcategory);' ? – Sean

+0

你的php數組中沒有'id'和'name'鍵。你應該改變爲'subresults [i]'。 – Sean

回答

1

有一件事是,如果你的選項的值和標籤是相同的,你不需要用'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]

0

在你的AJAX調用的subresults[i].idsubresults[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);