普通网友 2017-03-15 14:15
浏览 8

AngularJS http服务

I'm trying to send a http request, I succeeded in doing so. Thing is that when I return the value from the service, it sends an object like this:

Object {readyState: 1, getResponseHeader: function, getAllResponseHeaders: function, setRequestHeader: function, overrideMimeType: function…}

And the result is in responseText.

But if I print the response in the service it display the actual response. This is my service:

.service('saltalaFactory', ['$http', 'url', function($http,url){
this.getLocation = function(){
    return $.ajax({
        method: 'POST',
        dataType: 'json',
        url: 'http://alafila.cl/igniter/Appmovil/GetSucursales',
        data: {lat: '-33.4415275',lng: '-70.6517743'}
    }).done(function(response){
        return response;
    });
}
}]);

And this is the piece of code on my Controller to set the returned value to a variable:

$scope.init = function(){
    $scope.response=saltalaFactory.getLocation($scope.data.lat,$scope.data.lng);
    console.log($scope.response);
}  

If I do it by pressing a button it works on the second call, but not on the first. However I need to load this function on init. Thanks beforehand

  • 写回答

2条回答 默认 最新

  • ℡Wang Yan 2017-03-15 14:33
    关注

    You should do something like this in you service :

    .service('saltalaFactory', ['$http', '$q', 'url', function($http,$q,url){
    this.getLocation = function(){
    var deferred = $q.defer();
    $http({
      method: 'POST',
      dataType: 'json',
      url: 'http://alafila.cl/igniter/Appmovil/GetSucursales',
      data: {lat: '-33.4415275',lng: '-70.6517743'}
    }).then(function(response){
      deferred.resolve(response);
    }, function(error){
      deferred.reject(error);
    });
    return deferred.promise;
    }
    }]);
    

    and in your controller you can call you service function :

    $scope.init = function(){
     saltalaFactory.getLocation($scope.data.lat,$scope.data.lng)
      .then(function(result){
        $scope.response = result;
       }, function(error){
        console.log(error);
      });
     }
    
    评论

报告相同问题?

悬赏问题

  • ¥15 如何让企业微信机器人实现消息汇总整合
  • ¥50 关于#ui#的问题:做yolov8的ui界面出现的问题
  • ¥15 如何用Python爬取各高校教师公开的教育和工作经历
  • ¥15 TLE9879QXA40 电机驱动
  • ¥20 对于工程问题的非线性数学模型进行线性化
  • ¥15 Mirare PLUS 进行密钥认证?(详解)
  • ¥15 物体双站RCS和其组成阵列后的双站RCS关系验证
  • ¥20 想用ollama做一个自己的AI数据库
  • ¥15 关于qualoth编辑及缝合服装领子的问题解决方案探寻
  • ¥15 请问怎么才能复现这样的图呀