根据这篇文章Remove String from JSON,我想用JSON数据填充Dojo Selectbox。问题是我必须先更改JSON数据,然后才能将数据分发到dijit.form.select Box。

我通过JsonRest获取数据。问题是,如何将Json数据加载到普通对象变量中?我在这里尝试过,但是没有用。

var processStore = new JsonRest({
            target: "http://cnwin.ebusiness.local/activiti-rest/service/repository/process-definitions?startableByUser=kermit",
            headers: {"Authorization": "Basic a2VybWl0Omtlcm1pdA=="},
            allowNoTrailingSlash: false
            });

var processes = processStore.query("",{});


我只想将JsonRest存储中的JSON数据加载到一个普通变量中。

谢谢

最佳答案

JsonRest存储只接受一个数组,因此您无法检索数据,因为您的存储无法为您读取该数据。

如果您只对读取数据感兴趣(因此无需进行更新/创建/删除),最简单的方法是使用AJAX请求检索该数据并将其手动放入dojo/store/Memory存储中,例如:

require([ "dojo/request/xhr", "dojo/store/Memory" ], function(xhr) {
    var url = "http://cnwin.ebusiness.local/activiti-rest/service/repository/process-definitions?startableByUser=kermit";

    xhr(url, {
        handleAs: json
    }).then(function(data) {
        if (data.data !== undefined) {
            var myStore = new Memory({
                data: data.data
            });
            // Do something with "myStore"
    });
});


如果您对JsonRest存储的全部功能感兴趣,则必须自己扩展它。如果查看the code,您可以在以下位置看到几个AJAX请求:


get()
put()
remove()
query()


现在,您可以编写自己的商店并扩展这些方法。

09-07 18:19