TypeError:无法读取未定义的属性“Result”

时间:2016-03-27 01:40:02

标签: javascript angularjs

我正在尝试显示数据库中的结果,但我收到此错误消息

TypeError: Cannot read property 'Result' of undefined

我正在使用AngularJS创建单页应用程序。结果位于services.js。有人可以帮我解决这个错误。

这是我的services.js代码:

(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;
            };

         }
        ]
    );
}());

ResultSet的每一行都显示此错误。这意味着每次我点击其他导航选项卡时,我都会显示此错误消息。我真的需要有人帮忙。提前谢谢。

1 个答案:

答案 0 :(得分:0)

您收到此错误是因为您尝试取消引用undefined的变量。在这种情况下,它看起来像是由语句response.ResultSet.Result引起的。该错误表示response.ResultSetundefined

这意味着来自服务器的响应不是您期望的格式,或者服务器端代码中存在错误。