405 方法不允许,PATCH 不工作。 Laravel、Ajax、Jquery、引导模式

Posted

技术标签:

【中文标题】405 方法不允许,PATCH 不工作。 Laravel、Ajax、Jquery、引导模式【英文标题】:405 Method not Allowed, PATCH not working. Laravel, Ajax, Jquery, bootstrap modal 【发布时间】:2020-06-06 13:51:18 【问题描述】:

在 laravel 中我有一个 405 错误,但奇怪的是,当我想编辑一些数据并单击更新时,它不会刷新或加载页面。当我自己刷新页面时,更新已设置!只有我得到一个错误 405 PATCH method not allowed。我在互联网上做了一些搜索,但找不到如何解决这个问题。我发现的事情就像检查您的 apache2 配置,添加 csrf 字段,制作表单操作帖子并放置 !! method_field('patch') !! 里面。 我已经尝试了很多东西。

有人可以帮助我解决这个问题! 非常感谢

我的项目路线:

Route::resource('project', 'ProjectViewController');

我的项目控制器

public function update(Request $request, $id)
 DB::table('projects')
    ->where('id', $id)
    ->update($request->all()); return redirect('')->with('success', 'Project has been updated'); 


我的 Jquery Ajax:

$('.modal-footer').on('click', '.edit', function() 
    $.ajax(
        method: 'PATCH',
        url: 'route('project.update', $project->id)',
        data: 
            '_token': $('input[name=_token]').val(),
            'id': $('#fid').val(),
            'project_name': $("#pn").val(),
            'date': $('#Da').val(),
            'location': $('#Lo').val(),
            'first_name': $('#FN').val(),
            'last_name': $('#LN').val(),
            'city_name': $('#CN').val(),
            'email': $('#EM').val(),
            'number': $('#NUM').val()
        ,
        success: function(data)if(data.success == true) // if true (1)
  setTimeout(function()// wait for 5 secs(2)
       location.reload(); // then reload the page.(3)
  , 2000); ,

【问题讨论】:

而不是method: 'PATCH', 使用method: 'PUT', 代替method: 'PATCH',使用type: 'PATCH'type: 'PUT' 感谢您的回答,这是我在网络选项卡中得到的:消息“此路由不支持 PUT 方法。支持的方法:GET、HEAD。”这也是我做 PATCH 的时候 【参考方案1】:

您需要使用POST 作为方法并且您需要定义_method=post 您发送的数据。请尝试以下代码。

$('.modal-footer').on('click', '.edit', function() $.ajax( method: 'POST', url: 'route('project.update', $project->id)', data: '_method': 'PUT', '_token': $('input[name=_token]').val(), 'id': $('#fid').val(), 'project_name': $("#pn").val(), 'date': $('#Da').val(), 'location': $('#Lo').val(), 'first_name': $('#FN').val(), 'last_name': $('#LN').val(), 'city_name': $('#CN').val(), 'email': $('#EM').val(), 'number': $('#NUM').val() , success: function(data)if(data.success == true) // if true (1) setTimeout(function()// wait for 5 secs(2) location.reload(); // then reload the page.(3) , 2000); ,

【讨论】:

感谢您的回答,只有当我这样做时,我才会收到 sql 状态错误:SQLSTATE[42S22]: Column not found: 1054 Unknown column '_method' in 'field list' 在向数据库插入数据时需要排除_method。你能把出错的代码块发给我吗?

以上是关于405 方法不允许,PATCH 不工作。 Laravel、Ajax、Jquery、引导模式的主要内容,如果未能解决你的问题,请参考以下文章

ASP.NET Core 2.2 WebAPI 405 方法不允许

删除不工作在 WCF 休息服务抛出 (405) 方法不允许

为啥在禁用 webdav 后,在本地工作的 WebApi 的 DELETE 请求上出现 405 方法不允许错误?

Laravel 5.4 错误 405 方法不允许错误

Flask 文件上传返回错误 405 方法不允许

WebApi 2 HttpPut,HttpDelete,HttpPost无法正常工作-HTTP错误405.0 - 方法不允许