Dojo json select

#json #dojo

#json #dojo

Вопрос:

У меня есть dojo.xhrGet , которые возвращают правильный массив object :

  <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 почему остается пустым?

Комментарии:

1. Вам нужно показать нам содержимое data , полученное с сервера. Если это просто массив объектов, это, вероятно, ваша ошибка: параметр данных, который вы предоставляете ItemFileReadStore, должен быть объектом с {identifier: "id", items: [{...}, {...}, ...]} , где id — это имя идентификатора ваших объектов. Смотрите docs.dojocampus.org/dojo/data /…

2. Должно быть, из-за этого произошла ошибка. Вот строка json: {«bondiuser»:»gilles»,»dna»:null,»eigandi»:null,»fadir»:null,»faedingardagur»:1306972800000,»fang»:null,»harafar»:»Lodinn»,»id»:1,»kyn»:»Hundur»,»litur»:»Hvitur»,»modir»:null,»nafn»:»Bjartur»,»ormerki»:»123123″,»sfiNumer»:»12313123″,»stofnskra»:false,»version»:0}

3. Это всего лишь один объект. Разве ваш сервер не должен возвращать массив объектов?

Ответ №1:

Параметром данных для ItemFileReadStore должен быть объект со свойствами identifier и items .

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

Предполагается, что data имеется массив объектов, каждый из которых имеет по крайней мере свойство с именем bondiuser .