0

我正在加载 JSON 数据并将其填充到选择标签上

我为此使用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 回答