Я использую Laravel 5. В моем OrganisationsController у меня есть метод 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); } }
Надеюсь это поможет!
решение устраняет условие if (data.errors)