Я использую laravel 5.8, и я отправляю свою форму, используя ajax, и проверяю форму, используя контроллер laravel. И если проверка не проходит, в ответ я получаю сообщения об ошибках проверки, теперь я хочу показать эти сообщения об ошибках в форме.

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

Мой код проверки в контроллере пользователя

$this-{amp}gt;validate($request,[ 'name' ={amp}gt; 'required|string', 'email' ={amp}gt; 'required|email|unique:users', 'password' ={amp}gt; 'required|string|min:6' ]); 

и я отправил запрос на сохранение своих данных с помощью ajax.

Поэтому, если какая-либо проверка не пройдена, я получаю ответ, как указано ниже, на вкладке Chrome для сетевых разработчиков: —

 {"message":"The given data was invalid.","errors":{"email":["The email has already been taken."],"password":["The password field is required."]}} 

Поэтому я хочу получить доступ к этим сообщениям об ошибках и отобразить их под моей формой. Чтобы уведомить пользователей об ошибках. Однако я не смог этого сделать.

Я попытался это в моей ошибке AJAX: —

 error: function(data){ var errors = JSON.parse(data); $('.errors').append("{amp}lt;p{amp}gt;"  data.errors[error]  "{amp}lt;/p{amp}gt; "); } 

Пожалуйста, помогите мне разобраться. Спасибо

Этот пример ajax может помочь вам понять, как получить данные об ошибках. для формата отображения данных, я думаю, вы можете сделать это.

  $.ajax({ url: url, type: 'POST', data: formData, dataType: 'json', success: function(data) { } }).fail(function(xhr) { let data = xhr.responseJSON; if (data.errors) { // error happen $("#target-div").text(data.message); let errorInfo = ""; for(let inputName in data.errors) { errorInfo  = inputName  ":"  data.errors[inputName].message.join(", ")   "{amp}lt;br{amp}gt;"; } $("#target-error-info").text(errorInfo); } }); 

Если responseJSON не установлен или равен нулю, вы можете попробовать использовать let data = JSON.parse (xhr.responseText)

Ошибка проверки Laravel возвращает код состояния 422, вы можете проверить это:

  $.ajax({ ... success: function(data, statusCode) { // its validation error code if (statusCode == 422 {amp}amp;{amp}amp; 'errors' in data) { var errorMessage = '{amp}lt;ul{amp}gt;'; $.each(data.errors, function(k, msg){ errorMessage  = '{amp}lt;li{amp}gt;'   msg.join('{amp}lt;/li{amp}gt;{amp}lt;li{amp}gt;')   '{amp}lt;/li{amp}gt;'; }); errorMessage  = '{amp}lt;/ul{amp}gt;'; $('#errorDiv').html(errorMessage); } }, ... });