0

我正在尝试从我的 Ionic 项目以角度向我的 Laravel Dingo API 发出 POST 请求。当我在 POSTMAN 中发出 POST 请求时,它成功地创建了一条新记录,但是当我在 Angularjs 中进行时,它返回 GET 请求的响应。

这是 POSTMAN 为 Jquery 的代码建议的响应:

var settings = {
  "async": true,
  "crossDomain": true,
  "url": "http://app.extremenazarene.org/api/contacts",
  "method": "POST",
  "headers": {
    "authorization": "Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzdWIiOjEsImlzcyI6Imh0dHA6XC9cL2FwcC5leHRyZW1lbmF6YXJlbmUub3JnXC9hcGlcL2xvZ2luIiwiaWF0IjoxNDY0NjM1NDQwLCJleHAiOjE0NjQ2MzkwNDAsIm5iZiI6MTQ2NDYzNTQ0MCwianRpIjoiYmZjMTc3YzdhODk5OGE1Y2Q1NWRiYjIzOTU4YzQ5YzMifQ.fdiGmKy9ipPnvdLuapFFe8Rz6nD7ty-gkzfWq8ySO_U",
    "cache-control": "no-cache",
    "postman-token": "c022a35b-bbdd-2f77-f7b9-2802340dd0bb",
    "content-type": "application/x-www-form-urlencoded"
  },
  "data": {
    "fname": "sarkinda"
  }
}

$.ajax(settings).done(function (response) {
  console.log(response);
});

我的 angularjs 请求是

storeContact: function(token, data) {
            var deferred = $q.defer();
            var promise = deferred.promise;
            var settings = {
                method: "POST",
                url: "/api/api/contacts/",
                headers: {
                    'Content-Type' : 'application/x-www-form-urlencoded',
                    'Authorization': 'Bearer ' +token
                },
                data: data
            };
            console.log(settings);
            $http(settings).then(function mySuccess(response) {
                deferred.resolve(response.data);
            }, function myError(response){
                deferred.reject(response.statusText);
            });


            promise.success = function(fn) {
                promise.then(fn);
                return promise;
            };
            promise.error = function(fn) {
                promise.then(null, fn);
                return promise;
            };
            return promise;
        },

angularJS 代码返回成功响应,并为 GET 请求从同一 URL 返回数据。我相信我所有的 Laravel 代码都是正确的,因为 POSTMAN 可以成功运行调用并创建新记录。我的 angularJS 代码一定有问题。

注意我也尝试过通过 angular js 发送数据,格式如下:

data: {'fname':'testname'}
4

2 回答 2

0

所以我不知道如何修复 $http,但我改用了 $resource,它现在正在工作:

.service('ContactsService1', function($resource) {
        return {
            contacts: function(token) {
                return $resource('/api/contacts/:contact',
        {contact: "@contact"},
        { get: {
                method: 'GET',
                headers: {
                    'Authorization' : 'Bearer ' + token
                }
            },
            delete: {
                method: 'DELETE',
                headers: {
                    'Authorization' : 'Bearer ' + token
                }
            },
            save: {
                method: 'POST',
                headers: {
                    'Content-Type' : 'application/x-www-form-urlencoded',
                    'Authorization' : 'Bearer ' + token
                },
                transformRequest: function(obj) {
                    var str = [];
                    for(var p in obj)
                        str.push(encodeURIComponent(p) + "=" + encodeURIComponent(obj[p]));
                    return str.join("&");
                }
            },
        }
        )
    }}

    });

对于我的控制器,这是我的代码:

ContactsService1.contacts($scope.token).save(null, $scope.contact, function(data){
                $scope.result = data;
                console.log($scope.result);
                $state.go('menu.contacts', {}, {reload: true});
            }, function(data){
                if(data =='Unauthorized'){
                    window.localStorage.removeItem("token");
                    $state.go('login');
                }else{
                    //console.log(data);
                }
            });
于 2016-06-03T17:08:53.340 回答
0

您的角度代码正在到达不同的端点,不是吗?

  • /api/api/contacts/
  • 邮差/api/contacts

这可能是问题吗?

于 2016-06-02T21:45:46.103 回答