Angularjs
및 CodeIgnitor
으로 애플리케이션을 구축했습니다. angularjs는 $resource service을 사용하여 $scope
데이터를 설정하고 시작시 ng-init
을 사용하여 메소드를 가져옵니다.HTTP에서 큰 데이터가있는 json 객체 깨짐
적은 양의 데이터로도 문제가 없지만 많은 양의 데이터로 인해 응용 프로그램이 실패합니다. GET 매개 변수 제한과 같은 GET 응답에 데이터 크기 제한이 있습니까?
오류 :
Error: JSON.parse: end of data after property value in object
스크립트 :
app.factory('FamilyFind', ['$resource', 'Data', function ($resource, Data) {
return $resource(Data.rootUrl + 'admin/family_find/:id', {id: '@id'},
{
query: {
isArray: true,
method: 'GET'
},
update: {
method: 'PUT'
}
}
);
}]);
// load serverside data using http resource service
FamilyFind.get({}, function (response) { // success
$scope.tableData = response.data; // store result to variable
}, function (error) { // ajax loading error
Data.errorMsg(); // display custom error notification
// error caught here
});
내가 백엔드 서비스 philsturgeon CodeIgnitor RESTful API를 사용하고 있습니다.
CodeIgnitor 컨트롤러 :
function family_find_get($id = '', $type = 'json') {
$this->response->format = $type;
$family = $this->family_registration_model->find($this->get());
if($family) { // success
$this->response(array('data' => $family), 200);
} else { // error
$this->response(array('data' => array()), 200);
}
}
CodeIgnitor 모델 :이
function find($data) {
$query = "SELECT dev_members.name, dev_family.house_name, dev_family.house_no, dev_family.place,
dev_family.post, dev_family.phone,mem.male,mem.female
FROM dev_family
JOIN dev_members ON dev_members.id = dev_family.family_head_id
LEFT JOIN (SELECT family_id,SUM(gender = 'Male') AS male, SUM(gender = 'Female') AS female FROM dev_members) AS mem ON mem.family_id = dev_family.id WHERE dev_family.family_reg_no != ''";
if(isset($data['cluster']) && $data['cluster'] != '') {
$query.=" AND dev_family.cluster_id = ".$data['cluster']."";
}
$query = $this->db->query($query);
return $query->result();
}
편집 : 나는 서버 측의 응답을 디버깅 할 때
, 그것은 주를 보여줍니다 json 객체가 자동 종료되지 않음 어. JSON 포매터에,
{"data":[{"name":"abc","house_name":"dfdfgdfg","house_no":"1","place":"School Road","post":"dsfdfg","phone":"1111111","male":"278","female":"264"},{"name":"dgdfg","house_name":"dgdfg","house_no":"2","place":"School Road","post":"dfgdfg","phone":"111111","male":null,"female":null},{"name":"dgdfg","house_name":"dgdfg dgd","house_no":"3","place":"School Road","post":"dfgdg","phone":"11111","male":null,"female":null},{"name":"dgg","house_name":"dgdfg","house_no":"4","place":"School Road","post":"dggd","phone":"11111","male":null,"female":null}]
오류를 500 개 기록에서 추출 된 샘플 데이터를 참조하십시오
Error: Parse error on line 1:
...null,"female":null}]
-----------------------^
Expecting '}', ',', got 'EOF'
을 내가 추가 할 때 데이터를 위해 RESTClient 부가 기능에 사용하는 말 }
에 가까운 개체, 괜찮 았어.하지만이 문제는 어떻게 서버 측에서 해결할 수 있습니까? 왜 대용량 데이터에서만 발생합니까?
업데이트 :
나는 문제가 philsturgeon REST Controller library
에 있음을 깨달았다. 대신
$this->response(array('data' => $family), 200);
,의 나는
echo json_encode(array('data'=>$family));
을 시도 그리고 지금은 일하고 fine.Anyone는 philsturgeon REST Controller library
에서이 문제를 해결하는 방법을 알고?
질문 업데이트를 참조하십시오. – devo