我使用Laravel 5。在我的organizationscontroller中,我有一个方法addItem
public function addItem(Request $request)
{
$rules = array(
'nom' => 'required',
);
// for Validator
$validator = Validator::make(Input::all(), $rules);
if ($validator->fails())
return Response::json(array('errors' => $validator->getMessageBag()->toArray()));
else {
$section = new Section();
$section->nom = $request->nom;
$section->save();
return response()->json($section);
}
}
Ajax代码
$("#add").click(function() {
$.ajax({
type: 'post',
url: '/addItem',
data: {
'_token': $('input[name=_token]').val(),
'nom': $('input[name=nom]').val()
},
success: function(data) {
if ((data.errors)) {
$('.error').removeClass('hidden');
$('.error').text(data.errors.title);
$('.error').text(data.errors.description);
} else {
$('.error').remove()
$('table').append("<tr class='section" + data.id + "'><td>" + data.id + "</td><td>" + data.nom + "</td><td><button class='edit-modal btn btn-info' data-id='" + data.id + "' data-nom='" + data.nom + "'><span class='glyphicon glyphicon-edit'></span> Edit</button> <button class='delete-modal btn btn-danger' data-id='" + data.id + "' data-nom='" + data.nom + "'><span class='glyphicon glyphicon-trash'></span> Delete</button></td></tr>"); }
}
});
$('#noom').val('');
});
html代码
<div class="form-group row add">
<div class="col-md-5">
<input type="text" class="form-control " id="noom" name="nom"
placeholder="New section here" required>
<p class="error text-center alert alert-danger hidden"></p>
</div>
<div class="col-md-2">
<button class="btn btn-warning" type="submit" id="add">
<span class="glyphicon glyphicon-plus"></span> Add new Section
</button>
</div>
</div>
我不知道为什么我的验证不起作用。请举个例子。我用的是laravel 5。我搜索了很多网站。
如果验证失败,它将返回422
的状态码(错误码)。
在你的$.ajax
中,你只使用success
,如果你的验证失败,它不会被调用。
您需要在ajax选项中添加一个错误方法。使用上面的代码,您将得到如下内容:
success: function (data) {
$('.error').remove()
$('table').append("<tr class='section" + data.id + "'><td>" + data.id + "</td><td>" + data.nom + "</td><td><button class='edit-modal btn btn-info' data-id='" + data.id + "' data-nom='" + data.nom + "'><span class='glyphicon glyphicon-edit'></span> Edit</button> <button class='delete-modal btn btn-danger' data-id='" + data.id + "' data-nom='" + data.nom + "'><span class='glyphicon glyphicon-trash'></span> Delete</button></td></tr>");
},
error: function (data) {
if (data.errors) {
$('.error').removeClass('hidden');
$('.error').text(data.errors.title);
$('.error').text(data.errors.description);
}
}
希望这对你有帮助!
对于jquery 3及以上版本,使用以下代码
$.ajax({
type: 'post',
url: '/addItem',
data: {
'_token': $('input[name=_token]').val(),
'nom': $('input[name=nom]').val()
}
}).done(function(data){
//if success, do this
console.log(data);
alert('success');
}).fail(function(jqXHR){
if (jqXHR.status == 422) {
var errors = (jqXHR.responseJSON);
console.log(errors);
}
});