2013-08-06 4 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"} 

и результат будет р, г, о ...

не 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 
     }; 
     ... 
    }); 
... 

result является STRING (с 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 string. Если это то, что вы намереваетесь, тогда продолжайте!


Четвертый, в вашей $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 будет возвращаться не определен.

+0

Спасибо большое! – user2473037

Смежные вопросы