AngularJS控制器/工厂返回未定义的对象

AngularJS控制器/工厂返回未定义的对象,angularjs,angular-services,Angularjs,Angular Services,在工厂restful web api调用后,角度控制器结果未定义。 我看过很多关于这方面的帖子,但似乎没有一篇能解决我的问题。我有一个控制器,可以进行RESTfulWebAPI2调用。使用fiddler,我可以看到调用和200响应,但我似乎永远无法得到结果,而且我知道get是通过异步的。下面是工厂和控制器。我还尝试显式地将回调发送到工厂,这种方法甚至不会导致未定义的对象结果,只是不起作用。我在这里真的停滞不前了,我是安格拉斯的新手,怎么了?目前,我已将控制器调用连接到一个按钮,用于显式测试 **

在工厂restful web api调用后,角度控制器结果未定义。 我看过很多关于这方面的帖子,但似乎没有一篇能解决我的问题。我有一个控制器,可以进行RESTfulWebAPI2调用。使用fiddler,我可以看到调用和200响应,但我似乎永远无法得到结果,而且我知道get是通过异步的。下面是工厂和控制器。我还尝试显式地将回调发送到工厂,这种方法甚至不会导致未定义的对象结果,只是不起作用。我在这里真的停滞不前了,我是安格拉斯的新手,怎么了?目前,我已将控制器调用连接到一个按钮,用于显式测试

**FACTORY NO EXPLICIT CALL-BACK** 
casenoteApp.factory('MyFactory', function ($http) {


var factory = {};

var urlBase = 'http://xxxxxx/api/Client';


factory.getClients = function (userLogin) {

    return $http.get(urlBase + '/' + userLogin);
};


return factory;
});

**CONTROLLER NO EXPLICIT CALL-BACK** 
casenoteApp.controller('MyController', MyController);

function MyController($scope, MyFactory) {


$scope.addCustomer = function () {

    MyFactory.getClients(123456)
       .success(function (clients) {

            var curCust = clients;
            $scope.status = clients.last_name;

        })
       .error(function (error) {
           $scope.status = 'Unable to load client data: ' + error.message;
       });        

}


}

**FACTORY PASSING IN CALL-BACK**
casenoteApp.factory('MyFactory', function ($http) {


var factory = {};

var urlBase = 'http://xxxxxx/api/Client';

factory.getClients = function (userLogin, callback) {

    return $http.get(urlBase + '/' + userLogin).success(callback)

}

return factory;
});


**CONTROLLER PASSING IN CALL-BACK**
casenoteApp.controller('MyController', MyController);

function MyController($scope, MyFactory) {


$scope.addCustomer = function () 



    MyFactory.getClients(123456, function(clients) {

            var curCust = clients[0];
            $scope.status = clients.last_name;
        })


}

}

将工厂设置为使用
。然后
并返回数据,如下所示:

casenoteApp.factory('MyFactory', function ($http) {
    var urlBase = 'http://xxxxxx/api/Client';

    return {
        getClients: function (userLogin) {
            return $http.get(urlBase + '/' + userLogin).then(function(data) {
                return data.result;
            });
        }
    };
});
和您的控制器:

MyFactory.getClients(01234).then(function(data) {
    console.log(data); //hello data!
});

这导致了同样的问题。返回的JSON看起来很好:{“int_id”:123456,“last_name”:“Doe”,“first_name”:“John”,“type”:“FAM”,“sex”:null,“birthdate”:null在fiddler中,但在控制台中,我得到以下信息:XMLHttpRequest用于所需的跨源资源共享(CORS)。web服务位于同一台服务器上,但位于不同的虚拟目录中。这不需要jsonp,对吗?如果是,这听起来像是问题吗?为什么会发生此错误?好的,必须清除蜘蛛网。启动此操作时,angular visual studio项目正在运行内置服务器,web服务是托管的,因此原因是跨源问题。我现在已重新托管到IIS,并将呼叫返回到我的控制器,但返回的数据在发布到console.log.Ok时仍然未定义。它现在可以工作。它应该是.data,因此对于上述数据。data现在返回结果。谢谢。