0

JSONデータの読み込みに取り組んでおり、selectタグに入力しています

これにはDOJOを使用していますが、DOJOを使用する必要があります。

何が悪いのか教えてください

私が直面している問題は、JSON GetStatesResult で配列を宣言するために使用されますが、機能しません。GetStatesResult の代わりに項目を使用する場合にのみ機能します

dojo.ready(function() {
                    var stateStore = new dojo.data.ItemFileReadStore({
                        url : "http://localhost:8080/MobilePro/states.json"
                    });
                    function completed(GetStatesResult) {
                        var ref = dom.byId("stateSelect");
                        for ( var i = 0; i < GetStatesResult.length; i++) {
                            var node = domConstruct.create("option", {value: stateStore.getValue(GetStatesResult[i], "Value"), label: stateStore.getValue(GetStatesResult[i], "Desc")});
                            domConstruct.place(node, ref, "last");
                        }
                    }
                    function error(errData, request) {
                        console.log("Failed in loading data.");
                    }
                    stateStore.fetch({
                        onComplete : completed,
                        onError : error
                    });
                });

これはJSONです

{
    "GetStatesResult": [
        {
            "Desc": "--Select--",
            "Value": "-1"
        },
        {
            "Desc": "Alaska",
            "Value": "AK"
        },
        {
            "Desc": "Alabama",
            "Value": "AL"
        },
        {
            "Desc": "Arkansas",
            "Value": "AR"
        },
        {
            "Desc": "Arizona",
            "Value": "AZ"
        }

    ]
}
4

1 に答える 1

0

ItemFileReadStoreでは、アイテムのリストが「items」というプロパティに含まれている必要があります。ソースコードをハードコーディングしています。

this._arrayOfTopLevelItems = dataObject.items;

ItemFileReadStoreのみを使用してアイテムをフェッチしている場合は、dojo.xhrGet()を使用してみませんか?また、本当にItemFileReadStoreを使用する場合は、ユーザーdojo.xhrGet()を使用してデータを取得し、正しい形式で配置して(itemsプロパティを使用)、dataプロパティを使用してItemFileReadStoreコンストラクターに渡します。何かのようなもの:

dojo.xhrGet({ url: "whatever", success: function(response) {
   var data = {items: response.GetStatesResult};
   var stateStore = new dojo.data.ItemFileReadStore({ data: data});
});
于 2013-02-01T12:55:58.333 に答える