JSON下拉列表未正确填充

时间:2013-02-01 23:41:20

标签: php javascript json drop-down-menu

我很难使用JSON填充下拉列表 这是脚本

function ajax_get_json(){
    var results = document.getElementById("results");
    var hr = new XMLHttpRequest();
    hr.open("GET", "json.php", true);
    hr.setRequestHeader("Content-type", "application/json");
    hr.onreadystatechange = function() {
        if(hr.readyState == 4 && hr.status == 200) {
            var data = JSON.parse(hr.responseText);
            results.innerHTML = "";     
        for (var obj in data) {
           if (data.hasOwnProperty(obj)) {
                    results.innerHTML +="<option>"+ data.l_name +"</option>";
                }
            }
        }
    }
    hr.send(null);
    results.innerHTML = "requesting...";
}

Php生成有效的JSON:

{
    "l_id": [
        "24231",
        "24309",
        "24310",
        "24232"
    ],
    "l_group_id": [
        "001",
        "002",
        "003",
        "999"
    ],
    "l_name": [
        "001 - All Students",
        "002 - All Staff",
        "003 - All Residents",
        "999 - Test List"
    ]
}

我只想将l_name显示为选项。

此处的问题是所有值都插入到同一选项中。 我知道循环是错误的,但我无法让另一个循环工作。 主要目标是写:

<option value="l_id"> l_name</option>

我希望你们中的一位能指出我正确的方向。

1 个答案:

答案 0 :(得分:0)

如果这是你想要的

<option value="24231">001 - All Students</option>
<option value="24309">002 - All Staff</option>
<option value="24310">003 - All Residents</option>
<option value="24232">999 - Test List</option>

您可能想要这样做

var html='';
for (var i in data.l_id) {
    html +="<option value='" + data.l_id[i] + "'>"+ data.l_name[i] +"</option>";
}
results.innerHTML=html; // faster to re-write html once than per iteration