Laravel PUT方法在表单序列化的ajax帖子中不起作用



在编辑后表单中,使用@method('PUT'(将表单方法更改为PUT

<form action="{{ route('user.update', ['id' => $user->id]) }}" method="post" enctype="multipart/form-data" id="create-user-form">
@csrf
@method('PUT')
<div class="personal-details">
<div class="form-floating mb-2">
<input type="text" class="form-control" id="title" name="title" placeholder="Title" value="{{ $user->name }}">
<label for="title">{{ __('Title') }} <span class="text-danger">*</span></label>
</div>
//Some other fields
</div>
<div class="text-center mt-2 mb-2">
<button type="submit" class="btn btn-primary" id="userupdate">Update User</button>
</div>
</form>

我尝试通过ajax调用来验证这个表单。但它抛出了一个错误405 Method Not Allowed(此路由不支持PUT方法。支持的方法:POST。(
这是我的ajax代码

<script>
$(function(){
$(document).on('click', '#userupdate', function(e){
e.preventDefault(e);
$.ajaxSetup({
headers: { 'X-CSRF-TOKEN': "{{ csrf_token() }}" }
});
var element = $(this);
$.ajax({
method: "POST",
url: "{{ route('users.validate') }}",
data: $('#create-user-form').serialize(),
dataType: 'json',
success: function(data){
if(data.success)
{
$('#create-user-form').submit();
}
},
error: function(err){
console.log(err);
}
});
});
});
</script>

然后将表单数据更改为

data: {$('#create-user-form').serialize(), '_method':'PUT'},

在这种情况下,它显示未捕获的SyntaxError:意外字符串

这是我的路线

Route::put('user/update/{id}', 'UserController@update')->name('user.update');
Route::post('user/validate', 'UserController@validateRequest')->name('users.validate');

更改输入按钮类型,如type="按钮">

<button type="button" class="btn btn-primary" id="userupdate">Update User</button>

您需要添加表单方法";POST";以形式序列化

var data = $(this).serializeArray(); // convert form to array
data.push({name: "_method", value: 'POST'});

Jquery代码

$(document).on('click', '#userupdate', function(e){
e.preventDefault(e);
$.ajaxSetup({
headers: { 'X-CSRF-TOKEN': "{{ csrf_token() }}" }
});
var element = $(this);
var data = $(this).serializeArray(); // convert form to array
data.push({name: "_method", value: 'POST'});
$.ajax({
method: "POST",
url: "{{ route('users.validate') }}",
data: data,
dataType: 'json',
success: function(data){
if(data.success)
{
$('#create-user-form').submit();
}
},
error: function(err){
console.log(err);
}
});
});

最新更新