2015-10-28 49 views
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) 

回答

0

看起來像ajax智能猜測已經將數據視爲json並將其轉換爲一個對象,所以你不必再次解析它。此聲明:var arr = JSON.parse(data);是多餘的。嘗試:

jq.ajax({ 
    type: "GET", 
    url: "/Method/", 
    success: function (data) {   
     $scope.dashboards = { 
      '1': { 
       widgets: data 
      } 
     }; 
    } 
}); 
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"}] 

,將工作 前

或添加

的dataType對這一問題的回答:萬一「JSON」給你的函數 你會無需解析此對象

jq.ajax({ 
    type: "GET", 
    url: "/Method/", 
    dataType:"json", 
    success: function(data) { 

     var arr = data; 

     $scope.dashboards = { 
      '1': { 
       widgets: arr 
      } 
     }; 
    } 
});