Как добавить сообщение в xhr.responseText?

Я отправляю AJAX запросы Laravel 5.5 через jQuery.ajax(). jQuery.ajax().fail() возвращает коллбэку объект xhr, в котором находится вся инфа. В частности, ошибки валидации, если они есть, находятся в xhr.responseText. Laravel автоматически создаёт ответ в JSON и заполняет всё это, но теперь мне понадобилось добавить свою ошибку (не относящуюся к валидации) в responseText. Как это сделать в контроллере Laravel?

Пример кода:
function tryToAddComment(form) {
    Modifiers.addWaiting(form);
    let formData = new FormData(form);
    $.ajax({
        url: $(form).attr('action'),
        type: 'POST',
        data: formData,
        async: true,
        success: function (data) {
            // doing some work
        },

        cache: false,
        contentType: false,
        processData: false
    }).fail(function (xhr, status, error) {
        Modifiers.addFail(form);
        showXhrErr(xhr, status, error);
        Modifiers.removeWaitingFail(form);
    });
}

function showXhrErr(xhr, status, error) {
    alert(jsonErrorsToStr(xhr.responseText).trim()
 || 'Извините, произошла неизвестная ошибка (' + status + ', ' + error);
}


class CommentsController extends Controller
{
    public function store(Request $request, Commentable $commentable)
    {
        $this->validate($request, static::getChecks());

       // тут я хочу сделать пару проверок и добавить
      // в случае необходимости в ответ  ошибки

        $comment = $commentable->addComment($request->all(), \Auth::user()->id);
        $comment->number = count($commentable->comments);

        if($request->ajax()) {
            return view('common.comment', compact('comment'));
        }

        return back();
    }
  • Вопрос задан
  • 148 просмотров
Пригласить эксперта
Ответы на вопрос 1
Astatroth
@Astatroth
Я тут случайно
if ($request->expectsJson()) {
            return response()->json([
                'errors' => $validator->errors()
            ], 422);
        }


Дальше кастомизируйте как вам надо.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы