0

JSON.stringify(data);用来返回json

这是我的代码

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, o ...

不是programId,1,programName,project1.....

有任何想法吗?

4

1 回答 1

0

我不确定您到底要做什么,但让我指出您代码中的一些内容,这些内容可能会为您指明正确的方向。

首先,您的 JSON 数据(我假设您的意思是result来自您的服务器:

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

格式错误。键和值的双引号是正确的 JSON 格式(数字值不需要引号)。


其次,假设您的 JSON 数据确实是您想要的和期望的,在您的回调函数中:

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

result是一个字符串(因为 JSON 只是一种基于文本的序列化格式并且始终是一个字符串),意思是

data = {
  'program': result
};

结果data看起来像这样的 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属性都是 Array 原型的一部分。这意味着如果你传入的data是一个 JS 对象,.slice将会抛出一个“没有方法切片”的错误并且.length会返回 undefined。

于 2013-08-06T03:59:42.913 回答