2016-06-25 2 views
0

Django REST API에서 데이터를 가져 오는 Angular JS로 앱을 작성하려고합니다.
Angular JS로 데이터를 가져 오지 못함

나는이 스크립트를 가지고

var userListApp = angular.module('userListApp', ['ngResource']); 

userListApp.factory('Classroom', function($resource) { 
     return $resource('/classrooms/:id/', 
     {'query': {method: 'GET', isArray:false}} 
    ); 
    }); 

userListApp.controller('UsersController', function($scope, Classroom) { 
    Classroom.query(function(data) { 
    $scope.classrooms = data; 
    }); 
}); 

이는 HTML

<div ng-app="userListApp"> 
    <div ng-controller="UsersController"> 
     <table class="table table-striped"> 
      <thead> 
       <tr> 
        <th>Classroom</th> 
        <th>School</th> 
        <th>Academic year</th> 
       </tr> 
      </thead> 
      <tbody> 
       <tr ng-repeat="classroom in classrooms"> 
        <td>{{classroom.classroom}}</td> 
        <td>{{classroom.school}}</td> 
        <td>{{classroom.academic_year}}</td> 
       </tr> 
      </tbody> 
     </table> 
    </div> 
</div> 

입니다하지만 콘솔

Error: $resource:badcfg
Response does not match configured parameter
Error in resource configuration for action query . Expected response to contain an array but got an object (Request: GET /classrooms)

(from the error reference page of Angular JS)

에서이 오류를 받고 있어요

여기에 유래에 대한 몇 가지 답변을보고하고, this one에 와서, 그리고 나는 그들이

userListApp.factory('Classroom', function($resource) { 
     return $resource('/classrooms/:id/', 
     {method: 'classrooms', id: '*'}, 
     {'query': {method: 'GET', isArray:false}} 
    ); 
    }); 

을 말하려고 노력 그리고 나는 어떤 오류가 발생하지 않습니다,하지만 데이터 중 하나있어했다.

나는이를 넣어 시도했다 : 뭔가 "캐치"를하려고하면 같은 웹 페이지에 일부 테이블은 여기 UPDATE가 enter image description here


스크린 샷

이다, 그러나이있다 대신이

라인

return $resource('/classrooms/?format=json', 

각 응용 프로그램에

, 내가 네트워크에서 개발자 도구에 가면,이 데이터가 없지만 -> XHR, 내가 얻을 말했듯

[{"school":{"id":1,"school_name":"IPSIA F. Lampertico","address":"Viale Giangiorgio Trissino, 30","city":"Vicenza"},"academic_year":"2015/2016","classroom":"1^A","floor":0,"students":[{"classroom":1,"first_name":"Stefano","last_name":"Rossi","gender":"M","birthday":"1998-06-22"},{"classroom":1,"first_name":"Luca","last_name":"Possanzini","gender":"M","birthday":"1999-11-22"}] 

는하지만, 데이터가없는 JSON 데이터 html의 표에 나와 있습니다.


업데이트 2 : "형식 = JSON '"추가 한 후

자원 URL에, 나는 내가 세 교실이 내 데이터 (행의 정확한 양을 얻을, 그래서 나는 세 개의 행을 얻을 HTML 테이블에서), 데이터가 없습니다.


UPDATE 3 :

내가 콘솔 로그

enter image description here

+0

음, 스크린 샷은 테이블이 많은 행이 있기 때문에 당신이 데이터를 가지고 할 수 있음을 보여준다. 그것들은 비어 있습니다. 즉, 당신이 가진 일은 교실, 학교 및 academic_year라는 이름의 필드가 없거나 비어 있습니다. 브라우저의 dev 도구를 열고 실제로 얻은 것을보십시오. –

답변

0

userListApp.controller('UsersController', function($scope, Classroom) { 
    Classroom.query(function(data) { 
    $scope.classrooms = data; 
    console.log(data); <--- NEW LINE FOR THE DEBUG 
    }); 
}); 

지금 내가이 얻을 코드를 디버깅이 줄을 추가 한

data은 (는) orrect 형식. 게시 한 데이터의 마지막에 }]이 누락되었습니다. 서버 응답을 다시 확인하십시오.

전 시스템에서 전체 시나리오를 복제했으며 코드가 정상적으로 작동했습니다.

HTML : 너와 같음.

스크립트 :

var userListApp = angular.module('userListApp', ['ngResource']); 

userListApp.factory('Classroom', function($resource) { 
     return $resource('http://localhost:9000/classrooms/1', //changed this line only. 
     {'query': {method: 'GET', isArray:false}} 
    ); 
    }); 

userListApp.controller('UsersController', function($scope, Classroom) { 
    Classroom.query(function(data) { 
    $scope.classrooms = data; 
    }); 
}); 

http://localhost:9000/classrooms/1 반환 당신이 끝에 추가 }]으로 지정된 데이터 만.

출력 :

enter image description here

+0

예, 맞습니다. 복사하여 붙여 넣었고 마지막으로 "}]"을 넣는 것을 잊었습니다. 실제로 3 개의 "교실"이 있기 때문에 나는 처음으로 복사했습니다. 어쨌든 Json 코드는 정확합니다 (https://jsonformatter.curiousconcept.com/에서 유효성을 검사했습니다).하지만 어쨌든 데이터를 시각화 할 수는 없습니다. 이상한 것은 행의 정확한 양 (3 개)을 볼 수 있지만 데이터가 없습니다. –

+0

'$ scope.classrooms'에 데이터가 포함되어 있습니까? 그 시점에서 디버깅을 했습니까? 귀하의 CSS를 확인하십시오. 어쩌면 텍스트가 배경색과 같은 색일까요? 그리고 소스에 텍스트가 있는지 확인하십시오. – prashkr

+0

원본 파일이 이와 비슷합니까? [출처] (http://i.imgur.com/kLvEOFC.png) – prashkr

관련 문제