Я использую 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)
JSON.parse() очень строгий в грамматике, поскольку пара менбер объекта, это должно быть
string: value, поэтому "first" и "second" должны быть строковыми как 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"}]
он будет работать, на этот вопрос будет дан ответ
или добавить
dataType: "json" для вашей функции, если вам не нужно разбирать этот объект
jq.ajax({
type: "GET",
url: "/Method/",
dataType:"json",
success: function(data) {
var arr = data;
$scope.dashboards = {
'1': {
widgets: arr
}
};
}
});
Кажется, что интеллектуальная догадка ajax уже обрабатывает данные как json и преобразует их в объект, поэтому вам не нужно снова разбирать его. Это утверждение: var arr = JSON.parse(data);
является избыточным. Пытаться:
jq.ajax({
type: "GET",
url: "/Method/",
success: function (data) {
$scope.dashboards = {
'1': {
widgets: data
}
};
}
});