2013-08-06 59 views
0

我用JSON.stringify(data);返回JSONjson.stringify片陣列字

這裏是我的代碼

var data; 
programService.query({ 
    id: $routeParams.id 
    }, function (result) { 
    data = { 'program': result }; 
    data= JSON.stringify(data); 
    $scope.setPagingData(data,page,pageSize); 
    }); 

$scope.setPagingData = function(data, page, pageSize){ 
    var pagedData = data.slice((page - 1) * pageSize, page * pageSize); 
    $scope.myData = pagedData; 
    $scope.totalServerItems = data.length; 
    if (!$scope.$$phase) { 
     $scope.$apply(); 
    } 
}; 

JSON數據

{programId:1, 
programName:project1, 
programContent:content1, 
programStartDate:2012-01-01, 
templateId: "1"} 

,其結果將是P,R,鄰...

not a programId,1,programName,project1 .....

有什麼想法?

+0

JSON.stringify將一個對象轉換爲一個字符串。 – OverZealous

+0

我該如何返回json數組? – user2473037

+0

只是交叉引用你的兩個問題,你在這裏問了幾乎相同的問題:http://stackoverflow.com/questions/18071510/use-slice-function-to-slice-json-object –

回答

0

我不確定你想要做什麼,但讓我指出你的代碼中的一些東西,可能會指出你在正確的方向。

首先,你的JSON數據(我假設你的意思是作爲result從你的服務器:

{programId:1, 
programName:project1, 
programContent:content1, 
programStartDate:2012-01-01, 
templateId: "1"} 

是相當體面的惡意形成的鍵和值周圍雙引號是正確的JSON格式(包含數字值不需要引號)。


,假設你的JSON數據確實是你如何會想到它是在你的卡lback功能:

... 
    }, function (result) { 
     data = { 
     'program': result 
     }; 
     ... 
    }); 
... 

resultSTRING(因爲JSON是一個簡單的基於文本的序列化格式,並始終是一個字符串)在data,這意味着

data = { 
    'program': result 
}; 

結果看上去像一個JS對象如下:

{ 'program' : '{programId:1, programName:project1, programContent:content1, programStartDate:2012-01-01, templateId: "1"}' } 

也許你打算把JSON轉換成本地JS對象,在這種情況下JSON.parse(result)是你在找什麼。

data = { 
    'program': JSON.parse(result) 
}; 

data現在看起來像一個JS對象像這樣(假設是國內形成的JSON,否則解析功能將打破):

{ 
    "program" : { 
     "programId" : 1, 
     "programName" : "project1", 
     "programContent" : "content1", 
     "programStartDate" : "2012-01-01", 
     "templateId" : "1" 
    } 
} 

,回到您的回撥功能:

... 
    }, function (result) { 
     ... 
     data= JSON.stringify(data); 
     $scope.setPagingData(data,page,pageSize); 

    }); 
... 

data= JSON.stringify(data);將給定數據轉換爲JSON字符串。如果這是你的意圖,那麼繼續!


,在你$scope.setPagingData功能,

$scope.setPagingData = function(data, page, pageSize){ 
    var pagedData = data.slice((page - 1) * pageSize, page * pageSize); 
    $scope.myData = pagedData; 
    $scope.totalServerItems = data.length; 
    if (!$scope.$$phase) { 
     $scope.$apply(); 
    } 
}; 

.slice功能和.length屬性是數組原型的兩個組成部分。這意味着如果你傳入的data是一個JS對象,.slice會拋出一個「沒有方法片」的錯誤,並且.length將返回undefined。

+0

非常感謝! – user2473037