【发布时间】:2020-01-16 16:01:37
【问题描述】:
我使用相同的表单来插入、搜索和更新数据。对于插入,我使用 Laravel 的 store 方法并使用 Ajax 进行搜索和更新。
文本字段的记录插入和搜索工作正常,但更新记录时会引发错误“此路由不支持 POST 方法。支持的方法:GET、HEAD、PUT。” p>
在表单中添加刀片指令 @method('PUT') 仍然显示相同的错误。
路线:
Route::get('search-data/{sid?}', 'DataController@dataSearch');
Route::put('update-data/{sid?}', 'DataController@dataUpdate');
控制器:
use App\exModel;
public function dataSearch($sid)
{
$search = exModel::find($sid);
return Response::json($search);
}
public function dataUpdate(Request $request, $sid)
{
$var = exModel::find($sid);
$var->name = $request->name;
$var->save();
return Response::json($var);
}
脚本:
//Search
$(document).ready(function () {
$('#search').on('keydown', function(e) {
if(e.which == 13){
var sid = $("#search").val();
$.ajax({
url: '{{ URL::to('search-data/')}}'+"/"+ sid,
type: "Get",
dataType: 'json',
success: function(response){
$('#Getname').val(response.name);
}
});
}
});
});
//Update
$("#btn-update").click(function (e) {
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
})
e.preventDefault();
var formData = {
name: $('#Getname').val(),
}
var sid = $('#search').val();
console.log(formData);
$.ajax({
url: '{{ URL::to('update-data/')}}'+"/"+ sid,
type: 'PUT',
data: formData,
dataType: 'json',
success: function (response) {
console.log(response);
$('#Getname').val(response.name);
},
});
});
查看:
<form method="POST" action="{{ route('data.store') }}">
@method('PUT')
@csrf
<div>
<label>ID No</label>
<input type="text" id="search" class="form-control">
</div>
<div>
<label>Name</label>
<input type="text" name="name" id="Getname" class="form-control">
</div>
<div>
<button class="btn btn-success" input type="button" onclick="this.form.submit()">Save</button>
</div>
<div>
<button class="btn btn-info" type="button" id="btn-update">Update Record
</button>
</div>
</form>
【问题讨论】:
-
我看到了
$("#btn-update"),我看到了id="btn-save"。你确定你发布了相关代码? -
是的,忘记更改之前btn保存的id名称,请立即查看
-
看看这里:stackoverflow.com/questions/28143674/… 使用 PUT 方法。
-
@Daniel 我已经在我的表单中添加了方法刀片指令,请检查
-
好吧,我看它告诉我use POST with formData。 PUT 不受支持,应该像您一样实施。尝试序列化。这边:stackoverflow.com/questions/35375468/…