PHP вызывает код ошибки AJAX без использования массива - PullRequest
4 голосов
/ 11 марта 2011

Я хочу получить скрипт PHP, вызываемый через AJAX, для возврата с кодом ошибки, который будет обрабатывать обработчик jQuery AJAX error:. Я не хочу использовать массив JSON - я бы хотел сохранить его как можно более чистым. Может ли кто-нибудь указать мне правильное направление?

Спасибо,

Джеймс

Ответы [ 4 ]

12 голосов
/ 11 марта 2011

Если вы хотите запустить обработчик ошибок AJAX, просто передайте что-нибудь, кроме 200!Попробуйте это:

<?php
  header("HTTP/1.0 404 Not Found");
  exit();
?>

Просто не забудьте сделать две вещи:

  1. Попробуйте отправить правильный код ошибки в соответствии с методами HTTP.т. е. если ваша страница выдает ошибку, вы должны вернуть 500 и т. д. Вы можете увидеть ссылку здесь, на сайте w3.org .
  2. Убедитесь, что вы отправили заголовок до ЛЮБОГОдругое содержимое, кроме пробелов.

Это должно быть чистое решение, к которому вы стремитесь.

2 голосов
/ 11 марта 2011

Попробуйте это:

header("HTTP/1.0 404 Not Found");
exit();
1 голос
/ 11 марта 2011

Передача Ajax не обязательно должна быть JSON. Это может быть xml, json, script или html. По умолчанию AJAX использует XML (X означает AJAX). Я вижу, что вы используете JQuery. Если вы используете ajax метод , у вас есть параметр dataType , который вы можете изменить.

Поскольку вы говорите об этом, JSON является одним из чистейших , на мой взгляд, но если вы имеете в виду простой, вы можете использовать text вместо этого.

0 голосов
/ 11 марта 2011

РЕДАКТИРОВАТЬ: метод jQuery'ajax'statusCode 'работает, но только в jQuery 1.5

Я попробовал метод jquery's ajax ' statusCode ', работает сейчас, с jquery 1.5 , но не получил никаких результатов ... , но это должно быть путь ...

если мой php-скрипт делает это:

 //localhost/dev/false.php
 header("HTTP/1.0 404 Not Found");  
 exit();

и мой JavaScript делает это:

$.ajax({
  url:'http://localhost/dev/false.php',
  statusCode: {
                  404: function() {
                      alert('page not found');
                  }
              }
          });
...