Преобразование строковых данных в массив

0

Я использую 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)

2 ответа

1

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
            }
        };
    }
});
0

Кажется, что интеллектуальная догадка ajax уже обрабатывает данные как json и преобразует их в объект, поэтому вам не нужно снова разбирать его. Это утверждение: var arr = JSON.parse(data); является избыточным. Пытаться:

jq.ajax({
    type: "GET",
    url: "/Method/",
    success: function (data) {        
        $scope.dashboards = {
            '1': {
                widgets: data
             }
        };
    }
});

Ещё вопросы

Сообщество Overcoder
Наверх
Меню