2016-01-01 40 views
0

我正在使用Angular發送帶有$http服務的發佈請求。在發送帖子請求之前,我正在做Angular中所有表單的數據驗證。然而,我在PHP中做了一個驗證,即用戶是否已經存在於數據庫中。我如何有目的地調用錯誤(在PHP文件),以便觸發Angular錯誤回調,而不是成功回調?我應該故意拋出異常嗎?

如果意圖是拋出異常,異常消息是否傳入data參數爲角error回調函數?

+4

返回200 OK以外的東西(如400 BAD REQUEST)。你怎麼做取決於你的服務器端的結構,你使用的是哪個框架等。 – JimL

+1

另請參見:http://php.net/manual/en/function.http-response-code.php –

回答

0

基於這些評論,我的問題,我只是做了以下我的代碼:

if (duplicateUsers($username) > 0) { 
    return http_response_code(400); // successfully generated an error in 
            // the $http AngularJS servicces 
} else { 
    // other code 
} 
0

你可以連續使用你的承諾。第一個承諾將檢查成功的內容,這也是你可以拋出異常的地方。這將導致後續承諾失敗。

這是jsbin example

angular 
    .module('app', []) 
    .run(function($http) { 
    var from$http = $http 
     .get('www.google.com') //makes a request to www.google.com 
     .then(function(response) { 
     console.log('data was successfully retrieved from google'); 
     throw "from success handler"; //if has error, then throw "duplicated user" 
     }); 

    from$http.then(function() { // this then block is handling the previous exception 
     console.log('this success block is never called'); 
    }, function() { 
     console.log('inside error block even tho success was returned from www.google.com'); 
    }); 
    });