0

Ionic Project から 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 からデータを返します。POSTMAN は呼び出しを正常に実行して新しいレコードを作成できるため、Laravel コードはすべて正しいと思います。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

あなたのAngularコードは別のエンドポイントに到達していますね?

  • 角度/api/api/contacts/
  • 郵便屋さん/api/contacts

これが問題でしょうか?

于 2016-06-02T21:45:46.103 に答える