2016-06-02 5 views
0

내 laraval Dingo API에 내 이오닉 프로젝트에서 POST 요청을 보내려고합니다. POSTMAN에서 POST 요청을 만들면 새 레코드가 성공적으로 생성되지만 Angularjs에서 GET 요청에 대한 응답이 반환됩니다.Laraval API에 게시하여 내 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와 요청이 AngularJS와 코드가 동일한 URL에서 성공 응답 및 반환 데이터를 반환

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

입니다 GET 요청. POSTMAN이 호출을 성공적으로 실행하고 새 레코드를 만들 수 있기 때문에 모든 Laraval 코드가 옳다고 생각합니다. 내 angularJS 코드에 문제가있을 것입니다.

data: {'fname':'testname'} 
+0

콘텐츠 유형을'application/json'으로 변경하고 다시 시도하십시오. –

+1

@Justin angularjs는 ajax 요청을 이상하게 처리합니다. 사실 모든 POST 데이터를 요청 본문에 넣습니다. 다음과 같이 요청 본문의 내용을 덤프 할 수 있습니까? 공개 함수 foo (요청 $ 요청) { var_dump ($ request-> getContent()); 다이; } – erwan

+1

나는 @erwan에 동의한다 - 나의 각 프로젝트에서'$ _POST' 대신에 데이터를 얻기 위해'$ data = file_get_contents ('php : // input');'를 사용한다. – swatkins

답변

0

귀하의 각도 코드가 다른 엔드 포인트가 밤은 타격 :

참고 또한 다음과 같은 형식의 각도 JS를 통해 데이터를 전송 시도?

  • 각도 /api/api/contacts/
  • 우체부는 /api/contacts

이 문제가 될 수 있을까?

+0

CORS 문제로 인해 프록시를 추가했습니다. 다른 모든 $ http Get, Patch, DELETE는 모두/api/api/contacts /를 사용하여 정상적으로 작동합니다. POST 요청에 문제가있는 것 같습니다. – Justin

0

그래서 $의 HTTP를 해결하는 방법을 잘 모르겠지만, 내가 대신 $ 리소스를 사용하고 지금 노력하고 있습니다 : 내 컨트롤러에 대한

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