Ошибка 422 при попытке проверить форму Laravel через AJAX

Я пытался использовать класс Validator Larave. Я могу заставить его работать при отправке формы в обычном режиме, но когда я отправляю через AJAX, я получаю сообщение об ошибке:

POST http://localhost/dashboard 422 (Unprocessable Entity)

Даже когда я пробую простую версию своей формы:

<div class = "container">
    <div class = "row justify-content-center">
        <div class = "col-6">
            @if ($errors->any())
                @foreach($errors->all() as $error)
                    <div>
                        {{ $error }}
                    </div>
                @endforeach
            @endif
            <form action = "/dashboard" method = "post" id = "test-form"> 
                @csrf
                <input type = "text" name = "name" id = "name" />
                <input type = "submit">
            </form>
        </div>
    </div>
</div>

<script>
    $('#test-form').on('submit', function(e)
    {
        e.preventDefault();
        $.post($(this).attr('action'), $(this).serialize())
        .fail(function(data)
        {
            console.info(data);
        })
        .done(function(res)
        {
            alert('done');
        });
    });
</script>

Мой контроллер:

<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class DashboardController extends Controller
{
    public function index()
    {
        return view('dashboard');
    }

    public function test(Request $request)
    {
        $validateData = $request->validate(['name' => 'required']);

        echo 'submitted';
    }
}

Цель состоит в том, чтобы отправить форму, но сейчас я просто хочу, чтобы ошибки возвращались через запрос AJAX. Я использую Laravel 5.6.

Когда я получаю сообщение об ошибке, журнал Console.log распечатывается, а тест состояния - это то, что отображается как необработанная сущность.

Обновлено: вот данные из моего журнала консоли:

{readyState: 4, getResponseHeader: ƒ, getAllResponseHeaders: ƒ, setRequestHeader: ƒ, overrideMimeType: ƒ, …}
abort
:
ƒ ( statusText )
always
:
ƒ ()
catch
:
ƒ ( fn )
done
:
ƒ ()
fail
:
ƒ ()
getAllResponseHeaders
:
ƒ ()
getResponseHeader
:
ƒ ( key )
overrideMimeType
:
ƒ ( type )
pipe
:
ƒ ( /* fnDone, fnFail, fnProgress */ )
progress
:
ƒ ()
promise
:
ƒ ( obj )
readyState
:
4
responseJSON
:
errors
:
{name: Array(1)}
message
:
"The given data was invalid."
__proto__
:
constructor
:
ƒ Object()
hasOwnProperty
:
ƒ hasOwnProperty()
isPrototypeOf
:
ƒ isPrototypeOf()
propertyIsEnumerable
:
ƒ propertyIsEnumerable()
toLocaleString
:
ƒ toLocaleString()
toString
:
ƒ toString()
valueOf
:
ƒ valueOf()
__defineGetter__
:
ƒ __defineGetter__()
__defineSetter__
:
ƒ __defineSetter__()
__lookupGetter__
:
ƒ __lookupGetter__()
__lookupSetter__
:
ƒ __lookupSetter__()
get __proto__
:
ƒ __proto__()
set __proto__
:
ƒ __proto__()
responseText
:
"{"message":"The given data was invalid.","errors":{"name":["The name field is required."]}}"
setRequestHeader
:
ƒ ( name, value )
state
:
ƒ ()
status
:
422
statusCode
:
ƒ ( map )
statusText
:
"Unprocessable Entity"
then
:
ƒ ( onFulfilled, onRejected, onProgress )
__proto__
:
Object

Можете ли вы опубликовать data из журнала консоли?

lufc 24.05.2018 04:32
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
4
1
2 635
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Ответ 422 возвращается Laravel, когда выполняется запрос Ajax и есть ошибки проверки. Просмотрите ответ в консоли вашего браузера - он должен показать вам JSON, который включает в себя ошибки проверки с вашим запросом. Вероятно, ваш код jQuery для публикации в Laravel не отправляет атрибуты формы так, как вы ожидаете.

Хорошо, тогда это нормально, и пока есть мои ошибки JSON, я не должен беспокоиться об ошибке и просто анализировать ответ?

Ron Butcher 24.05.2018 04:58

Спасибо. Я могу правильно получить свои данные, игнорируя ошибку.

Ron Butcher 24.05.2018 05:57

Другие вопросы по теме