【问题标题】:How to get part of JSON for KendoDataSource如何为 Kendo DataSource 获取 JSON 的一部分
【发布时间】:2018-05-28 13:43:52
【问题描述】:

我需要从外部服务器填充 KendoListView,并且我只需要使用我正在读取的 Java Servlet 响应的一部分

       var srcListView = new kendo.data.DataSource({
            transport: {
            read: {
                dataType: "json",
                url: "MainServlet",
                data:{event:"Test"},
            },
        },
    });

响应是:

{
  "status": "ok",
  "response": {
    "trucks": [
      "A6U-905",
      "AHF-888",
      "AHP-779",
      "buzz"
    ]
  }
}

我只需要用于 kendoListView 的卡车数组,我正在使用 Kendo-ui,我该怎么做?

【问题讨论】:

    标签: javascript jquery kendo-ui kendo-datasource


    【解决方案1】:

    作为@DontVoteMeDown 所说的关于使用schema.parse 的替代方案,您可以在不需要处理结果而只返回元素中的内容的情况下使用更简单的解决方案。此解决方案将schema.data 定义为包含数据的字段的名称。在您的示例中:

    new kendo.data.DataSource({
        transport: {
            read: {
                    dataType: "json",
                    url: "MainServlet",
                    data:{event:"Test"},
            }
        },
        schema: {
            data: "response.trucks"
        }
    });
    

    当您需要对接收到的数据进行一些转换时,我建议使用schema.parse,而当您只是返回接收到的 JSON 的某些子元素时,我建议使用schema.data

    【讨论】:

    • 我忘了那个方法,它好多了。
    【解决方案2】:

    使用dataSource.schema.parse 过滤要在小部件中使用的数据:

    new kendo.data.DataSource({
        transport: {
            read: {
                    dataType: "json",
                    url: "MainServlet",
                    data:{event:"Test"},
            }
        },
        schema: {
            parse: function(data) {
                return (data && data.trucks ? data.trucks : []);
            }
        }
    });
    

    【讨论】:

    • 感谢答案我几乎是正确的,只是我做了这个并且工作了.. schema: { parse: function(data) { return (data && data.response.trucks ? data.response.trucks : [] ); },
    • @DavidDominguez 太棒了!!
    • @DavidDominguez 查看 OnaBai 的回答。
    猜你喜欢
    • 2015-09-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多