Вернуть текст ошибки, а не целую страницу

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
imiotis
Сообщения: 8
Зарегистрирован: 2020.07.11, 17:49

Вернуть текст ошибки, а не целую страницу

Сообщение imiotis »

Здравствуйте!
Например, я отправляю $.get('/site/text'), но та страница выдает Bad Request (#400) Отсутствуют обязательные параметры: password.
Я отлавливаю ajax ошибки так:
$.get('/site/text').done(..).fail(function(e){
alert("Какая-то ошибка")
});
Вопрос: как получить текст этой ошибки ("Bad Request (#400) Отсутствуют обязательные параметры: password")?
Error.responseText выдает целую html-страницу со стилями и прочими ""<!DOCTYPE html><html lang="ru-RU"><head>... <h1>Bad request...". А я бы хотел выдать текст ошибки alert-om
Аватара пользователя
ElisDN
Сообщения: 5845
Зарегистрирован: 2012.10.07, 10:24
Контактная информация:

Re: Вернуть текст ошибки, а не целую страницу

Сообщение ElisDN »

Вернуть из контроллера JSON:

Код: Выделить всё

if (Yii::$app->request->isAjax) {
    Yii::$app->response->format = Response::FORMAT_JSON;
    return ActiveForm::validate($model);
}
imiotis
Сообщения: 8
Зарегистрирован: 2020.07.11, 17:49

Re: Вернуть текст ошибки, а не целую страницу

Сообщение imiotis »

ElisDN писал(а): 2021.01.13, 13:57 Вернуть из контроллера JSON:

Код: Выделить всё

if (Yii::$app->request->isAjax) {
    Yii::$app->response->format = Response::FORMAT_JSON;
    return ActiveForm::validate($model);
}
Я имел виду не ошибку, связанную с валидацией, а исключение.
Например, страница, на которую был отправлен ajax, вернула HttpException 503. Как получить информацию об этой ошибке в ответе ajax-запроса? Я бы хотел получить что-то вроде {name: "", message: "", errorCode: 503}, а не целую html-страницу вида (см скриншот)
Аватара пользователя
ElisDN
Сообщения: 5845
Зарегистрирован: 2012.10.07, 10:24
Контактная информация:

Re: Вернуть текст ошибки, а не целую страницу

Сообщение ElisDN »

Подключить https://www.yiiframework.com/doc/api/2. ... negotiator и в Ajax-запросах посылать заголовок Accept: application/json
imiotis
Сообщения: 8
Зарегистрирован: 2020.07.11, 17:49

Re: Вернуть текст ошибки, а не целую страницу

Сообщение imiotis »

Спасибо, все отлично! Заработало прям с первого раза, как в behaviors фильтр ContentNegotiator добавил!
Ответить