Kendo无法获取json文件并进行解析

时间:2016-02-29 13:11:58

标签: javascript angularjs json kendo-ui

我有以下存储在远程服务器server\test.json上的JSON文件:

{
    "ABC1": [
        {
            "field": "value",
            "field": "value",
            "field": "value"
        },
        {
            "field": "value",
            "field": "value",
            "field": "value"
        }
    ],
    "ABC2": {
        "field": "value",
        "field": "value"
    },
    "ABC3": [
        {
            "field": "value",
            "field": "value",
            "field": "value",
            "XYZ1": {
                "field": "value",
                "field": "value",
                "field": "value"
            },
            "field": "value"
        },
    ]
}

我试图获取这个json文件并使用Kendo + AngularJS渲染它的包含 我试过以下方法来获取文件:

this.detailsData = new kendo.data.DataSource(
{
schema: {

   // How to define schema for this json?    
},

transport: 
{
    read: 
    {
        contentType: "application/json; charset=utf-8",
        type: "GET",
        dataType: "jsonp",
        url: "server/test.json"
    }
},
change: function (data) 
{
    alert("Success :"+data);
},
error: function (xhr, error) 
{
    alert("Error");
    console.debug(xhr);
    console.debug(error);
}
});

每次收到错误“警告”时,我都无法获取该文件 在浏览器调试日志中,我收到错误:“SyntaxError:Unexpected token”和状态:“parsererror”。
我在某些事件上打电话给this.detailsData.read();

我可以从浏览器访问此文件而不会出现任何问题。

这段代码有什么问题?
还有如何为这个json定义架构?

1 个答案:

答案 0 :(得分:1)

您是否有意尝试检索jsonp数据?这与json不同。如果您不期望jsonp,那么将您的数据类型声明更改为简单的json:

dataType: "json",

就定义数据源模式而言,如果您可以操作来自服务器的JSON数据格式,请尝试为其指定一个主对象名称(在下面的情况下为myData)。

 {
    myData: [{
        "ABC1": [
            {
                "field": "value",
                "field": "value",
                "field": "value"
            },
            {
                "field": "value",
                "field": "value",
                "field": "value"
            }
        ],
        "ABC2": {
            "field": "value",
            "field": "value"
        },
        "ABC3": [
                    {
                        "field": "value",
                        "field": "value",
                        "field": "value",
                        "XYZ1": {
                            "field": "value",
                            "field": "value",
                            "field": "value"
                        },
                        "field": "value"
                    },
                ]
            }]
    }

然后,您需要做的就是在kendo数据源中定义架构是引用此对象名称:

schema: {
            data: 'myData'
        }