2017-06-09 42 views
0

有沒有辦法忽略或繞過此錯誤代碼400並且只是在發生此錯誤時觸發函數?angualrjs如何在POST成功後忽略狀態400

我嘗試這樣做: -

vm.createOrder = function() { 
var deferred = $q.defer(); // update 
orderService.createOrder() 
    .then(function (response, status) { 
     deferred.resolve(response); // update 
     if(status == 400) { 
      console.log('Should never happen but trigger a function anyway! '); 
      localStorage.clear(); 
     } 
     console.log('Successfully created an order: ', response.status); 

    }) 
} 

orderService: -

createOrder: function() { 
      return $http({ 
       url: 'apiURL', 
       method: 'POST' 
      }) 
     } 

,但它甚至不console.logif(status)條件或success字符串,但POST方法確實發佈了我想發佈的數據,但它返回的錯誤代碼爲400

編輯固定

orderService.createOrder() 
       .then(function (response) { 
        console.log('Successfully created an order: ', response.status); 
       }) 
       .catch(function (e) { 
        console.log('Should never happen but trigger a function anyway! '); 
        localStorage.clear(); 
        console.log(e); 
       }) 
+0

您的'createOrder'函數是否返回(並解析)Promise?如果你的'.then()'中沒有任何內容在觸發,那麼我會檢查的第一件事是... –

+0

我更新了代碼,嘗試使用'$ q'推遲但不確定是否你實際使用它。如果沒有,你會怎樣? – MrNew

+0

添加服務代碼,返回'$ http'請求 – MrNew

回答

0

您的服務應該是這樣的。

createOrder: function() { 
       return $http.post('SomeURL') 
        .then(function (response) { 
          return response.data; 
        }, 
         function (response) { 
          return $q.reject(response); 
        }); 
       } 

你應該這樣稱呼它,而不是嘗試捕捉。

orderService.createOrder().then(function(response){ 
    //Successfull Call 
},function(response){ 
    //Error on call 
}); 
+0

返回函數中的數據? –

+0

是的。它返回你請求的數據,否則它會觸發$ q.reject並作爲失敗從服務中返回。 – Dylan

+1

返回哪裏? –