我正在加载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"
}
]
}
答案 0 :(得分: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});
});