我正在使用Angular發送帶有$http
服務的發佈請求。在發送帖子請求之前,我正在做Angular中所有表單的數據驗證。然而,我在PHP中做了一個驗證,即用戶是否已經存在於數據庫中。我如何有目的地調用錯誤(在PHP文件),以便觸發Angular錯誤回調,而不是成功回調?我應該故意拋出異常嗎?
如果意圖是拋出異常,異常消息是否傳入data
參數爲角error
回調函數?
我正在使用Angular發送帶有$http
服務的發佈請求。在發送帖子請求之前,我正在做Angular中所有表單的數據驗證。然而,我在PHP中做了一個驗證,即用戶是否已經存在於數據庫中。我如何有目的地調用錯誤(在PHP文件),以便觸發Angular錯誤回調,而不是成功回調?我應該故意拋出異常嗎?
如果意圖是拋出異常,異常消息是否傳入data
參數爲角error
回調函數?
基於這些評論,我的問題,我只是做了以下我的代碼:
if (duplicateUsers($username) > 0) {
return http_response_code(400); // successfully generated an error in
// the $http AngularJS servicces
} else {
// other code
}
你可以連續使用你的承諾。第一個承諾將檢查成功的內容,這也是你可以拋出異常的地方。這將導致後續承諾失敗。
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');
});
});
返回200 OK以外的東西(如400 BAD REQUEST)。你怎麼做取決於你的服務器端的結構,你使用的是哪個框架等。 – JimL
另請參見:http://php.net/manual/en/function.http-response-code.php –