Hi Sander thanks for the help. This code is contained within a factory 
which is why i was using the defer (though i may still be wrong doing 
so).The idea being that as i cannot wait for the response i have to pass 
the promise back to the controller and continue in the .then of the 
original call (still getting used to async).  
Ive included my full factory and controller below and have hooked up to a 
opensource API just to rule my API out. Now i'm starting to think there may 
be something going on network wise my end as this only works 
intermittently. When it works i can see (via fiddler) that data is passed 
to the service (Json Object) see below 1 success 2 fails. 
<https://lh3.googleusercontent.com/-TbAchqjdeo4/VtcNg7M_MdI/AAAAAAAALP4/WfoLmL5BAL8/s1600/Snap%2B2016-03-02%2Bat%2B15.57.40.png>










When it does not work no data is passed.. its really strange. Im very 
intrigued by the sample you provided and the potential to remove the 
defer/. Please would you be able to demonstrate a call from a controller 
calling a service and handling error/success ? 

'use strict';
    app.factory('addressService', ['$http', '$q', 'ngAuthSettings', 
function ($http,$q, ngAuthSettings) {

        var serviceBase = ngAuthSettings.apiServiceBaseUri;
        var addressServiceFactory = {};
var _createAddress  = function (address) {
var mydata =  {
title: 'foo',
body: 'bar',
userId: 1
}

        var deferred = $q.defer();

        $http.post('http://jsonplaceholder.typicode.com/posts', mydata, { 
headers: { 'Content-Type': 'application/x-www-form-urlencoded' } 
}).success(function (response) {
            alert("success");
            deferred.resolve(response);
        }).error(function (err, status) {
            alert("fail");
            deferred.reject(err);
        });
        return deferred.promise;
    };

    addressServiceFactory.getAddresses = _getAddresses;
    addressServiceFactory.createAddress = _createAddress;
    return addressServiceFactory;
}]);

app.controller('createAddressController', 
['$scope','addressService','attributeService', function 
($scope,$addressService,$attributeService) {
$scope.createAddress = function (){
        $addressService.createAddress($scope.address)
            .then(function (results)    {
                                            alert("commited");
                                            $state.go('addresses');
                                            //$scope.addresses  =  results;
                                        }, function(error){
            alert("Oops there has been an error saving the address");
            });
    };
}]);

Thanks again for the assistance.



On Wednesday, March 2, 2016 at 12:49:35 PM UTC, Sander Elias wrote:
>
> Hi Neil,
>
> First of all, you should drop the entirely unneeded defer.
> This will do exactly the same:
>
> var _createAddress = function (address) {
>    return $http.post(serviceBase + 'api/Addresses/Address',address)
>        .then(function (response) {return response.data}); // strip out 
> the data from the response, wich is the only difference between .success 
> and .then
>  };
>
> Do I read it correctly that you are debugging your server? If this is the 
> case, setting the breakpoint might be the cause of the err:null.
>
> Regards
> Sander
>

-- 
You received this message because you are subscribed to the Google Groups 
"AngularJS" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/angular.
For more options, visit https://groups.google.com/d/optout.

Reply via email to