我有一個模式,更新有關國家的信息。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' –