2016-03-27 17 views
0

Ich versuche, Ergebnisse aus der Datenbank angezeigt werden, aber ich bin immer diese FehlermeldungTypeerror: kann Eigenschaft ‚Ergebnis‘ gelesener undefined

TypeError: Cannot read property 'Result' of undefined

Ich bin eine einzelne Seite Anwendung mit AngularJS zu schaffen. Das Ergebnis ist in der services.js. Kann mir jemand helfen, diesen Fehler zu beheben?

Das ist mein services.js Code:

(function() { 
'use strict'; 
/** Service to return the data */ 

angular.module('MovieApp'). 
    service('dataService',   // the data service name, can be anything we want 
     ['$q',      // dependency, $q handles promises, the request initially returns a promise, not the data 
     '$http',     // dependency, $http handles the ajax request 
     function($q, $http) {  // the parameters must be in the same order as the dependencies 

      /* 
      * var to hold the data base url 
      */ 
      var urlBase = '/cm0665-assignment/server/index.php'; 
      var loginUrl = '/cm0665-assignment/server/login.php'; 

      /* 
      * method to retrieve courses, or, more accurately a promise which when 
      * fulfilled calls the success method 
      */ 
      this.getCategories = function() { 
       var defer = $q.defer(),    // The promise 
        data = { 
         action: 'listCategory', 
         //subject: 'category' 
        }; 

       $http.get(urlBase, {params: data, cache: true}).       // notice the dot to start the chain to success() 
        success(function(response){ 
         defer.resolve({ 
          data: response.ResultSet.Result,   // create data property with value from response 
          rowCount: response.RowCount // create rowCount property with value from response 
         }); 
        }).             // another dot to chain to error() 
        error(function(err){ 
         defer.reject(err); 
        }); 
       // the call to getCourses returns this promise which is fulfilled 
       // by the .get method .success or .failure 
       return defer.promise; 
      }; 

      this.getMovies = function (categoryid) { 
       var defer = $q.defer(), 
       data = { 
        action: 'listFilms', 
        //subject: 'films', 
        category_id: categoryid 
       } 
       $http.get(urlBase, {params: data, cache: true}). 
         success(function(response){ 
          defer.resolve({ 
           data: response.ResultSet.Result, 
           rowCount: response.RowCount 
          }); 
         }). 
         error(function(err){ 
          defer.reject(err); 
         }); 
       return defer.promise; 
      }; 

      this.getActors = function (filmid) { 
       var defer = $q.defer(), 
       data = { 
        action: 'listActors', 
        film_id: filmid 
       } 
       $http.get(urlBase, {params: data, cache: true}). 
         success(function(response){ 
          defer.resolve({ 
           data: response.ResultSet.Result, 
           rowCount: response.RowCount 
          }); 
         }). 
         error(function(err){ 
          defer.reject(err); 
         }); 
       return defer.promise; 
      }; 

      this.getAllMovie = function() { 
       var defer = $q.defer(), 
       data = { 
        action: 'listFilms' 
       } 
       $http.get(urlBase, {params: data, cache: true}). 
         success(function(response){ 
          defer.resolve({ 
           data: response.ResultSet.Result, 
           rowCount: response.RowCount 
          }); 
         }). 
         error(function(err){ 
          defer.reject(err); 
         }); 
       return defer.promise; 
      }; 

      this.getSearchResult = function() { 
       var defer = $q.defer(), 
       data = { 
        action: 'search', 
        // term: terms 
       } 
       $http.get(urlBase, {params: data, cache: true}). 
         success(function(response){ 
          defer.resolve({ 
           data: response.ResultSet.Result, 
           rowCount: response.RowCount 
          }); 
         }). 
         error(function(err){ 
          defer.reject(err); 
         }); 
       return defer.promise; 
      }; 

      this.login = function (userID, passwd) { 
       var defer = $q.defer(), 
       data = { 
        //action: 'loginRob', 
        userid: userID, 
        password: passwd 
       }; 

       $http.post(loginUrl, data). // notice the dot to start the chain to success() 
        success(function (response) { 
         defer.resolve({ 
          data: response.status, // create data property with value from response 
          result: response, 
          user: response.username 
         }); 
         console.log(response); 
        }). // another dot to chain to error() 

        error(function (err) { 
         defer.reject(err); 
        }); 
       return defer.promise; 
      }; 

     } 
     ] 
    ); 
}()); 

Jede Zeile der des ResultSet diesen Fehler angezeigt wird. Dies bedeutet, dass ich jedes Mal, wenn ich auf eine andere Navigationsleiste klicke, diese Fehlermeldung zeige. Ich brauche wirklich jemanden Hilfe dabei. Vielen Dank im Voraus.

+0

Dieser Fehler zeigt an, dass Sie auf 'result' zugreifen, bevor es definiert ist. In einem anderen Fall, wenn es in einigen Fällen nicht definiert ist, dann handle es mit der Bedingung 'if-else'. –

+0

aber der Code funktionierte gestern. Ich habe danach nichts mehr geändert. Kann es Syntaxfehler sein? – anonymous5671

+0

ich habe gerade herausgefunden, dass, sobald ich den gleichen Code in mozilla laufen seine Arbeit aber in Chrom nicht funktioniert – anonymous5671

Antwort

0

Sie erhalten diesen Fehler, weil Sie versuchen, eine Variable, die undefined ist, zu dereferenzieren. In diesem Fall sieht es so aus, als ob es durch die folgende Anweisung verursacht wird: response.ResultSet.Result. Der Fehler zeigt an, dass response.ResultSetundefined ist.

Das bedeutet, dass die Antwort vom Server nicht in dem von Ihnen erwarteten Format vorliegt oder ein Fehler im serverseitigen Code vorliegt.

+0

Es funktioniert nachdem ich meinen Cache in meinem Browser gelöscht habe – anonymous5671

Verwandte Themen