Привет Я использую Laravel и jQuery Ajax для отправки контактной формы. Это работает отлично, и я могу легко поймать сообщение об успехе, как его строку. Но мое сообщение об ошибке передается как массив, поэтому я думаю, что он работает по-другому, поскольку сообщения об ошибках не выводятся. Но я могу видеть в моей консоли, что он был принят обратно в виде так:Laravel ajax output json сообщения об ошибках
errors: {name: ["The name field is required."], email: ["The email field is required."],…}
email: ["The email field is required."]
message: ["The message field is required."]
name: ["The name field is required."]
success: false
Я пытаюсь добавить эти сообщения об ошибках, как это в моем HTML:
error: function (XMLHttpRequest, json, errors) {
$("#errors").append(json.message);
}
и мой контроллер передает эту до ajax следующим образом:
return Response::json(array('success' => false,
'errors' => $validator->getMessageBag()->toArray()
Однако это не имеет никакого эффекта. Я что-то упускаю? Мой код ниже. Надеюсь, кто-то может помочь. Заранее спасибо.
public function getContactUsForm()
{
if(Request::ajax()){
$data = Input::all();
$rules = array(
'name' => 'required',
'email' => 'required',
'message' => 'required');
// catch validation and pass back json reponse if not filled in correctly.
$validator = Validator::make ($data, $rules);
if ($validator -> passes()){
//Send email using Laravel send function
Mail::send('emails.contactform', $data, function($message) use ($data)
{
$message->from(Config::get('mail.from')['address'], Config::get('mail.from')['name']);
$message->to('[email protected]', 'Test')->subject(' Contact Form');
});
return Response::json(array(
'success' => true,
'message' => 'Thank you, your message has been sent.'
));
} // end if start else
else
{
return Response::json(array(
'success' => false,
'errors' => $validator->getMessageBag()->toArray()
));
}
}
else {
return 'NOT AN AJAX RESPONSE...';
}
}
и мой Аякса вызов ниже:
$('#submit-contact').on('submit', function(e) {
e.preventDefault();
var name = $('#name').val();
var message = $('#message').val();
var email = $('#email').val();
$.ajax({
url: '/contact_request',
headers: {
'X-CSRF-Token': $('meta[name="csrf-token"]').attr('content')
},
data: {name:name, message:message, email:email},
type: 'POST',
success: function (json) {
// clear inputs
$('#name,#message,#email').val('');
// append success message
$("#success").append(json.message);
},
error: function (jqXHR, json) {
$("#errors").append(json.errors);
}
});
});
'' 'json.errors [ошибка]' '' представляет собой массив вместо строки? – JCarlos