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

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

just editing above answer following code will work properly

    var application=angular.module('myApp',[]);

application.controller("myController",function($scope,saltalaFactory){
//$scope.init = function(){
 saltalaFactory.getLocation()
  .then(function(result){
    $scope.response = result;
    console.log($scope.response)
   }, function(error){
    console.log(error);
  });
// }


});

application.service('saltalaFactory', ['$http', '$q', function($http,$q){
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;
}
}]);