我有一个模式,更新有关国家的信息。Laravel修补程序AJAX
// Partial code of the modal
<div id="EditModal" class="modal fade" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">× </button>
<h4 class="modal-title" id="myModalLabel">Edit <label id="EntityType"></label></h4>
</div>
<div class="modal-body">
<div class="row">
@yield('EditModalBody')
</div>
</div>
<div class="modal-footer" style="text-align: center">
{{ Form::submit('Save', ['class' => 'btn btn-success', 'id' => 'editBtn']) }}
<button type="button" class="btn btn-danger" data-dismiss="modal">Cancel</button>
{!! Form::close() !!}
</div>
</div>
</div>
</div>
我想用AJAX来实现这一点,所以,如果有任何错误,模态不会关闭和每个输入字段下传递消息的错误出现。
这是我的JS:
<script type="text/javascript">
$("#EditModal").submit(function (e) {
e.preventDefault();
var selector = $(this);
$.ajax({
type: 'PATCH',
dataType: 'json',
url: selector.attr("action"),
data: selector.serialize(),
success: function (data) {
if (data.success) {
alert('go go go');
} else {
// for debugging
alert('data');
}
},
error: function (xhr, textStatus, thrownError) {
alert(xhr.status);
alert(thrownError);
}
});
});
我得到 “405不允许的方法” 的错误,虽然我宣布我的控制器作为 “的ressource” 是这样的:
Route::resource('country', 'CountryController',
['except' => ['show']]);
如果我做php artisan route:list
我可以看到PATCH路由被声明。
任何想法?
编辑1:
这是(部分)我的控制器:
public function update($id, Request $request)
{
$validator = Validator::make($request->all(), $this->getRules(), $this->getMesssages());
if ($validator->fails()) {
$json = new stdClass();
$json->success = false;
$json->errors = $Validator->errors();
}
else {
$json = new stdClass();
$json->success = true;
}
return Response::json($json);
编辑2:
所以我在我的模式加入这个<input type="hidden" name="_token" value="{{{ csrf_token() }}}"/>
,我不再得到405错误。我仍然有一个问题,我总是得到我的JS的“错误”部分(只有现在我得到状态0)
你可以告诉selector.attr(“action”)是怎么样的。 –
它应该看起来像/ country/idOrSomething –
正确。它是'国家/ id' –