Преднамеренно вызвать ошибку в $ http почтовом запросе

0

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

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

  • 4
    Верните что-нибудь еще, кроме 200 OK (например, 400 BAD REQUEST). То, как вы это сделаете, зависит от того, как структурирована ваша серверная часть, какую платформу вы используете и т. Д.
  • 1
    Смотрите также: php.net/manual/en/function.http-response-code.php

2 ответа

0
Лучший ответ

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

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

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

Вот пример 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');
    });
  });

Ещё вопросы

Сообщество Overcoder
Наверх
Меню