JavaScript / jQuery и PHP Ajax вызывают ошибку - PullRequest
3 голосов
/ 20 октября 2010

Можно ли принудительно заставить состояние ошибки возвращаться к ajax-запросу из сценария php.

Я обрабатываю состояния успеха и ошибки в ajax-запросе, и я хочу найти способ вызвать ошибку.Ошибка, кажется, только вызвана ошибкой xhttp, и я хочу вызвать это, когда условие не выполнено на сервере.Кажется запутанным возвращение успеха и необходимость поставить флаг в ответе за ошибку

Ответы [ 2 ]

6 голосов
/ 14 мая 2013

Вы можете подойти к этому с двух точек зрения:

  • Принудительно выдавать ошибку путем вывода HTTP-заголовка, такого как 404 или 503.
  • Принудительно выдавать ошибкуна основе определенных условий результирующих данных.

Принудительно выдавать ошибку путем вывода заголовка HTTP, такого как 404 или 503:

PHP

<?php
if(User::Login($_POST['username'], $_POST['password'])) { // Your logic here
  print 'Login successful!';
} else {
  header("HTTP/1.0 403 Forbidden");
  print 'Bad user name / password';
}

jQuery

$.ajax({
  'url': '/some/url',
  'type': 'POST',
  'data': {
    'username': 'someone@example.com',
    'password': 'rhd34h3h'
  },
  'success': function(data) {
    alert(data);
  },
  'error': function(jqXHR, textStatus, errorThrown) {
    alert('ERROR: ' + textStatus);
  }
});

Принудительно выдавать ошибку на основании определенного состояния полученных данных:

PHP

<?php
$return = array();
if(User::Login($_POST['username'], $_POST['password'])) { // Your logic here
  $return['success'] = True;
  $return['message'] = 'Login successful!';
} else {
  $return['success'] = False;
  $return['message'] = 'Bad user name / password';
}
print json_encode($return);

jQuery

$.ajax({
  'url': '/some/url',
  'type': 'POST',
  'dataType': 'json',
  'data': {
    'username': 'someone@example.com',
    'password': 'rhd34h3h'
  },
  'success': function(data) {
    if(data['success']) { // Successful login
      alert(data['message']);
    } else { // Login failed, call error()
      this.error(this.xhr, data['message']);
    }
  },
  'error': function(jqXHR, textStatus, errorThrown) {
    alert('ERROR: ' + textStatus);
  }
});
4 голосов
/ 25 октября 2010

Для этого можно использовать header , например:

header('HTTP/1.1 503 Service Unavailable');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...