php - Laravel:MethodNotAllowedHttpException 错误,AJAX 调用资源控制器后没有消息
问题描述
我正在更新数据库中某些模型的值,但是当我点击提交时,我收到以下错误:
“消息:”,异常:“Symfony\Component\HttpKernel\Exception\MethodNotAllowedHttpException”,文件:“C:\xampp\htdocs\Restaurante1\vendor\laravel\framework\src\Illuminate\Routing\RouteCollection.php”,行: 255"
这是我的 JQuery 代码:
var formData = new FormData();
formData.append('id', $(this).attr("data-id"));
formData.append('first', $('#schedules_morning').val());
formData.append('second', $('#schedules_night').val());
$.ajax({
async: true,
cache: false,
url: '/schedules',
type: 'PUT',
data:
{
formData
},
dataType: 'JSON',
processData: false,
contentType: false,
success: function (data) {
$('.form_valid_container').fadeIn().html('<span class="form_valid_text">✓ '+ data.success +'</span>');
form.trigger("reset");
console.log(data.success);
},
error: function (data){
var errors = data.responseJSON;
console.log(errors);
$.each(errors , function(){
$('.form_error_container').fadeIn().html('<span class="form_error_text">✘ '+ errors.message +'</span>')
});
}
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
我将请求发送到资源控制器路由:
Route::resource('/schedules','ScheduleController');
public function update(Request $request)
{
$schedule = Schedule::findOrFail($id);
$schedule->morning = $request->morning;
$schedule->night = $request->night;
$schedule->save();
return response()->json([
'schedule' => $schedule,
'success' => 'Horario actualizado correctamente',
]);
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
解决方案
PHP(Laravel)只是欺骗了 PUT 和 DELETE 请求,因此在 laravel 中的所有 put 请求中,他们放置了一个名为_method
value的隐藏变量put
,laravel 再次验证了该方法与 post 请求。因此,像下面这样替换您的代码,它应该可以工作。
var formData = new FormData();
formData.append('id', $(this).attr("data-id"));
formData.append('first', $('#schedules_morning').val());
formData.append('second', $('#schedules_night').val());
formData.append('_method', 'put');
$.ajax({
async: true,
cache: false,
url: '/schedules',
type: 'POST',
data:
{
formData
},
dataType: 'JSON',
processData: false,
contentType: false,
success: function (data) {
$('.form_valid_container').fadeIn().html('<span class="form_valid_text">✓ '+ data.success +'</span>');
form.trigger("reset");
console.log(data.success);
},
error: function (data){
var errors = data.responseJSON;
console.log(errors);
$.each(errors , function(){
$('.form_error_container').fadeIn().html('<span class="form_error_text">✘ '+ errors.message +'</span>')
});
}
});
推荐阅读
- python - 如何在 Python 中对字符串进行四舍五入?
- npm - 我无法在 Ionic v3 中安装相机
- android - 限制用户在 RecyclerView 中滚动
- swift - 为什么将结构转换为 AnyObject 而不是 swift 中的编译错误?
- video - H264 P&B 帧是否包含像素值?
- android - 将数据从活动传递到片段android工作室
- compass-sass - gem install compass - 无法构建 gem 本机扩展
- python - PyCharm 中的“Feather”库安装失败
- julia - 为什么 Julia 变量不存在于 for 循环的范围内?
- c++ - 使用指针将像素强度分配给未初始化的 Mat 矩阵