【发布时间】:2015-03-29 08:07:01
【问题描述】:
您好,我正在使用 Laravel 和 jQuery Ajax 提交联系表单。这非常有效,我可以轻松地将成功消息作为字符串捕获。但是我的错误消息是作为数组传递的,所以我猜它的工作方式不同,因为没有输出错误消息。但我可以在我的控制台中看到它是这样传回的:
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('mail@gmail.com', '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...';
}
}
我的 ajax 调用如下:
$('#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 );
}
});
});
【问题讨论】: