2011-05-23 76 views
0

我有一个dojo.xhrGet返回对象的正确数组:道场JSON选择

<script type="text/javascript"> 

    dojo.require("dijit.form.FilteringSelect"); 
    dojo.require("dojo.data.ItemFileReadStore"); 

     dojo.addOnLoad(function() { 

      var name = dojo.byId("nafn"); 
      name.setAttribute("dojoType", "dijit.form.ComboBox"); 

      dojo.parser.parse(name.parent); 

      dojo.xhrGet({ 
       url: "http://localhost:8080/App/gots", 
       handleAs: "json", 

       load: function(data){ 
        dojo.byId("container").innerHTML = data; 
        dojo.parser.parse("container"); 

        console.log(data); 

        var store = new dojo.data.ItemFileReadStore({ data: data }); 

        console.log(store); 

        var filteringSelect = new dijit.form.ComboBox({ 
         id: "stateSelect", 
         name: "state", 
         value: "Search", 
         store: store, 
         searchAttr: "bondiuser" 
        }, 
        "nafn"); 

      }, 

      onError: function(err) { 
       console.log(err); 
      }, 
      headers:{"Accept":"application/json"} 
      }); 

     }); 
    </script> 

当我输出到我的JavaScript控制台,我可以看到我的对象,当我做:

console.log(data); 

ItemFileReadStore仍为空为什么?

+0

您需要向我们显示从服务器收到的'data'内容。如果它只是一个对象数组,那可能是你的错误:你给ItemFileReadStore的数据参数应该是一个带有'{identifier:“id”,items:[{...},{...},...的对象。 。]},其中id是对象标识符的名称。请参阅http://docs.dojocampus.org/dojo/data/ItemFileReadStore#general-structure – Frode 2011-05-23 11:55:13

+0

错误必须来自此。这里是json字符串:{“bondiuser”:“gilles”,“dna”:null,“eigandi”:null,“fadir”:null,“faedingardagur”:1306972800000,“fang”:null,“harafar” Lodinn”, “ID”:1, “KYN”: “Hundur”, “litur”: “Hvitur”, “modir”:空, “nafn”: “Bjartur”, “ormerki”: “123123”, “sfiNumer” :“12313123”,“stofnskra”:false,“version”:0} – gpasse 2011-05-23 12:05:55

+0

这只是一个对象。你的服务器不应该返回一个对象数组吗? – Frode 2011-05-23 12:33:42

回答

1

ItemFileReadStore的数据参数应该是具有属性identifieritems的对象。

var store = new dojo.data.ItemFileReadStore({ data: { 
    identifier: "bondiuser", 
    items: data 
}}); 

这假定data是对象的所有这些都至少一个属性命名bondiuser的阵列。