Я использую Angular для отправки запроса на сообщение с помощью сервиса $http
. Перед отправкой почтового запроса я делаю всю проверку данных формы в Angular. Тем не менее, есть одна проверка, которую я делаю в PHP о том, существует ли пользователь в базе данных. Как я могу целенаправленно вызывать ошибку (в файле php), чтобы вызвать обратный вызов угловой ошибки вместо обратного вызова успеха? Должен ли я целенаправленно отбрасывать исключение?
Если намерение состоит в том, чтобы выдать исключение, передается ли сообщение об исключении в параметр data
для функции обратного вызова угловой error
?
Основываясь на комментариях к моему вопросу, я просто сделал следующее для своего кода:
if (duplicateUsers($username) > 0) {
return http_response_code(400); // successfully generated an error in
// the $http AngularJS servicces
} else {
// other code
}
Вы можете связать свои обещания. Первое обещание будет проверять контент успеха, а также, где вы можете выбросить исключение. Это приведет к последующим обещаниям о возврате отказа.
Вот пример jsbin.
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');
});
});