Пользовательские ошибки PHP для вызовов AJAX - PullRequest
6 голосов
/ 12 апреля 2011

Я создаю веб-приложение и мне интересно, как обрабатывать ошибки с помощью моих вызовов AJAX. Например, если пользователь вводит какие-то данные, которые являются недопустимыми (неверный адрес электронной почты, пользователь уже существует), я хочу иметь возможность выдать ошибку из PHP.

Я видел здесь http://php4every1.com/tutorials/jquery-ajax-tutorial/, что вы можете просто использовать объект JSON и обрабатывать отчет об ошибках из функции Success JQuery, но это не похоже на правильный способ сделать это. Для меня будет иметь смысл использовать функцию ошибок jQuery при возникновении ошибки. Я думаю, что я сторонник подобных вещей.

Вот как я это делаю прямо сейчас.

//In my PHP file called from JQuery
function error($msg) {
    header("HTTP/1.0 555 ".$msg);
    die();
}
//Then that error is handled accordingly from JQuery

Итак, я создаю код ошибки 555, который не определен как что-либо, и добавляю свое собственное сообщение об ошибке. Это правильный способ сделать это? Должен ли я просто использовать JSON? Должен быть стандартный способ отправки сообщений об ошибках, как это, верно?

Если вам нужно узнать больше моего кода, чтобы получить лучшее представление, весь проект запущен на github: https://github.com/josephwegner/fileDrop. Файл, о котором идет речь, config / phpFuncts.php .

Ответы [ 3 ]

6 голосов
/ 12 апреля 2011

Я бы просто использовал объект JSON и HTTP-заголовок, равный 200. В самом запросе не было ничего плохого, и ваш сервер вел себя так, как и предполагалось - ошибка была на другом уровне абстракции.

2 голосов
/ 12 апреля 2011

Я ненавижу использовать коды состояния HTTP для обозначения ошибок Коды HTTP должны быть зарезервированы для фактических ошибок уровня HTTP, а ошибки, связанные с запросом AJAX, должны отправляться обратно через структуру JSON.

, например

$data = array()
if (some big ugly computation fails) {
   $data['errorcode'] = -123;
   $data['error'] = true;
   $data['success'] = false;
   $data['errormessage'] = 'some helpful error message';
} else {
   $data['success'] = true;
   $data['error'] = false;
   $data['response'] = 'whatever you wanted to send back....';
}
echo json_encode($data);

Тогда на стороне клиента

if (data.error) {
   alert('Request blew up: ' + data.errormessage);
}
2 голосов
/ 12 апреля 2011

Семейство 400 из кодов состояния HTTP указывает на наличие проблемы с запросом. Я бы установил код ответа на 400 и включил бы список сообщений об ошибках в тело ответа как JSON.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...