【问题标题】:Loading JSON from Dojo JsonRest into object variable将 Dojo JsonRest 中的 JSON 加载到对象变量中
【发布时间】:2014-03-14 07:51:47
【问题描述】:

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

我通过 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("",{});

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

谢谢

【问题讨论】:

    标签: javascript json rest dojo


    【解决方案1】:

    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()

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-09-13
      • 2011-01-11
      • 1970-01-01
      • 2013-11-18
      • 2021-10-24
      • 2018-08-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多