Я использую Angular для отправки post-запроса с помощью службы $http. Я выполняю всю проверку данных формы в Angular перед отправкой post-запроса. Однако есть одна проверка, которую я делаю в PHP, - существует ли уже пользователь в базе данных. Как мне целенаправленно вызвать ошибку (в php-файле), чтобы обратный вызов Angular error сработал вместо обратного вызова success? Должен ли я целенаправленно вызвать исключение?

Если предполагается выбросить исключение, передается ли сообщение об исключении в параметр data для функции обратного вызова Angular error?

A.Sharma

Ответов: 2

Ответы (2)

Согласно комментариям к моему вопросу, я только что сделал следующее в своем коде:

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

Вы можете выстроить цепочку обещаний. Первое обещание будет проверять содержимое success, и здесь же вы можете бросить исключение. Это приведет к тому, что последующие обещания вернут отказ.

Здесь 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');
    });
  });

2022 WebDevInsider