0

私は HTML を持っています<select>:

<div id="content">
    <input type="button" id="get-btn" onclick="getData();"/>
    <select id="attrib-type-sel"></select>
</div>

ユーザーが次のボタンをクリックすると、jQuery のgetJSONメソッドを使用してサーバーにアクセスし、データをプルバックして<select>、オプションを設定します。

$(document).ready(function() {
    $.getJSON(
        "some/url/on/my/server",
        function(data) {
        var optionsHTML = "";
        var len = data.length;
        for(var i = 0; i < len; i++) {
            optionsHTML += '<option value="' + data[i] + '">'
                + data[i] + '</option>';
        }

        $('#attrib-type-sel').html(optionsHTML);
    });
});

このコードを Firebug で実行すると、AJAX 呼び出しが成功し、次の JSON が返されることがわかります。

[
    {
        "id":1,
        "name":"Snoopy",
        "tag":"SNOOPY",
        "allowsAll":false
    }
]

(1 レコードのみを返します)。

ただし、UI に戻ると、このコードが起動すると<select>、内部 HTML が を読み取る 1 つのオプションを持つ が作成されます[object Object]

ここで何が起こっているのか誰にもわかりますか?問題ないように見えgetJSONますが、結果から JSON を抽出し、それを使用して選択項目に入力するコードにバグがあります。前もって感謝します!

4

2 に答える 2

1

それは data[i] がオブジェクトだからです。実際に使っconsole.log(data[i])てみて、どんな感じかチェックしてみてください。

data[i].iddata[i].nameおそらくあなたが探しているものです。

于 2012-10-17T11:55:00.923 に答える
0

data[i].idオプションを作成するには&が必要ですdata[i].name

for(var i = 0; i < len; i++) {
        optionsHTML += '<option value="' + data[i].id + '">'
            + data[i].name + '</option>';
}
于 2012-10-17T11:56:02.570 に答える