我有以下存储在远程服务器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定义架构?
答案 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'
}