1

私は次のデータベーステーブルを持っています(データベースにはもっと多くのデータがありますが、これがすべてではありません!):

catid   value   description
0        350     350 euro
0        500     500 euro
0        650     650 euro
1        0       No
1        1       Yes


PHPとjson_encode()を使用して、このテーブルのJSON文字列を作成しています。

jQuery171024539993586950004_1349776890005([{"0":"0","catid":"0","1":"350","value":"350","2":"350 euro","description":"350 euro"},{"0":"0","catid":"0","1":"500","value":"500","2":"500 euro","description":"500 euro"},{"0":"0","catid":"0","1":"650","value":"650","2":"650 euro","description":"650 euro"},{"0":"1","catid":"1","1":"0","value":"0","2":"No","description":"No"},{"0":"1","catid":"1","1":"1","value":"1","2":"Yes","description":"Yes"}])

今私が欲しいのは、HTMLの場合と同じように、JSONを使用して選択ボックスに入力することです。

<select id="0">
    <option value="350">350 euro</option>
    <option value="500">500 euro</option>
    <option value="650">650 euro</option>
</select>

<select id="1">
    <option value="0">No</option>
    <option value="1">Yes</option>
</select>

誰かがこれを手伝ってくれますか?私は($ .getJSONを使用して)テーブルを埋めるためにループを実行する方法を知っていますが、私はちょっとこれに固執しています。

4

2 に答える 2

2

この関数は、投稿されたオブジェクトをループし、メニューにデータを入力します(投稿されたソースを指定)。

var populateSelects = function(data) {
    var cat0 = $('select#0'),
        cat1 = $('select#1'),
        opt = $('<option />'),
        newOpt = {},
        cat0opts = [],
        cat1opts = [];
    $.each(data, function(i, obj) {
        //clone the option element so as to not re-create a new one
        newOpt = opt.clone();
        //obj is the JavaScript object in the array, so
        //dot-notation works nicely
        newOpt.text(obj.description).val(obj.value);
        if (obj.catid === "0") {
            //push the DOM element, not the jQuery object
            cat0opts.push(newOpt[0]);
        } else if (obj.catid === "1") {
            cat1opts.push(newOpt[0]);
        }
    });
    //Add the array of DOM elements to their respective menus,
    //clearing out any existing menu items.
    cat0.empty().append(cat0opts);
    cat1.empty().append(cat1opts);
};

これが実際のフィドルです:http://jsfiddle.net/a5MTE/1/

重要な注意点の1つはcatid比較です...解析されたJSONがcatid(文字列ではなく)数値として返される場合は、比較をに変更する必要がありますif (obj.catid === 0)

于 2012-10-09T11:14:41.470 に答える
0

json構文解析によって、パーサーを作成する必要があります。addcatのif and else条件によって、それを実行できるようになります。

于 2012-10-09T10:23:25.570 に答える