我正在使用https://github.com/ManifestWebDesign/angular-gridster。以下是默认图表大小的代码: -
$scope.dashboards = {
'1': {
widgets: [{
row: 0,
col: 0,
sizeX: 2,
sizeY: 1,
name: "Chart1",
canvas: "canvas1"
}, {
row: 0,
col: 2,
sizeX: 2,
sizeY: 1,
name: "Chart2",
canvas: "canvas2"
}]
}
};
我想将此默认尺寸存储在数据库和数据库中。在负载和电话上调用它将其应用于$scope.dashboards
。
所以我将数据存储在数据库列中,如下所示: -
[{row: 0,col: 0,sizeX: 2,sizeY: 1,name: "Chart1",canvas: "canvas1"}, {row: 0,col: 2,sizeX: 2,sizeY: 1,name: "Chart2",canvas: "canvas2"}]
在ajax电话之后: -
jq.ajax({
type: "GET",
url: "/Method/",
success: function(data) {
var arr = JSON.parse(data);
$scope.dashboards = {
'1': {
widgets: arr
}
};
}
});
给我错误: -
SyntaxError: Unexpected token r
at Object.parse (native)
答案 0 :(得分:1)
JSON.parse()在语法上非常严格,作为对象的一对,它应该是
的字符串:值 所以"第一"和"第二"应该是字符串作为json。将您的json更改为以下代码,它应该是正确的
'[{"row": "0","col": "0","sizeX": "2","sizeY": "1","name": "Chart1","canvas": "canvas1"},
{"row": 0,"col": 2,"sizeX": 2,"sizeY": 1,"name": "Chart2","canvas": "canvas2"}]
它会起作用
之前已经回答了这个问题或添加
数据类型:" JSON"你的功能 如果你不需要解析这个对象
jq.ajax({
type: "GET",
url: "/Method/",
dataType:"json",
success: function(data) {
var arr = data;
$scope.dashboards = {
'1': {
widgets: arr
}
};
}
});
答案 1 :(得分:0)
似乎ajax智能猜测已经将数据视为json并将其转换为对象,因此您不必再次解析它。这句话:var arr = JSON.parse(data);
是多余的。尝试:
jq.ajax({
type: "GET",
url: "/Method/",
success: function (data) {
$scope.dashboards = {
'1': {
widgets: data
}
};
}
});