当前位置: 首页 > 知识库问答 >
问题:

获取405方法不允许异常

崔宇
2023-03-14

我有一个jquery脚本(从github下载),可以删除实体。下面是脚本。

$(document).ready(function() {


var restful = {

    init: function(elem) {
        elem.on('click', function(e) {
            self=$(this);
            e.preventDefault();

            if(confirm('Are you sure you want to delete this record ? Note : The record will be deleted permanently from the database!')) {
                $.ajax({
                    headers: {
                        Accept : "text/plain; charset=utf-8",
                        "Content-Type": "text/plain; charset=utf-8"
                    },
                    url: self.attr('href'),
                    method: 'DELETE',
                    success: function(data) {
                        self.closest('li').remove();
                    },
                    error: function(data) {
                        alert("Error while deleting.");
                        console.log(data);
                    }
                });
            }
        })
    }
};

restful.init($('.rest-delete'));

});

而我就是这样利用它的

{{link_to_route('download.delete','x', ['id' => $download->id], array('class'=> 'rest-delete label label-danger')) }}

相应的laravel路线如下所示

Route::delete('/deletedownload/{id}', array('uses' => 'DownloadsController@deletedownload', 'as'=>'download.delete'));

然而,当我尝试按下X(删除按钮)时,我得到了405方法不允许的错误。错误如下

DELETE http://production:1234/deletedownload/42 405 (Method Not Allowed) . 

这在我的本地沙箱上运行良好。

任何帮助都将不胜感激。

谢啦

共有1个答案

司马高昂
2023-03-14

您已经使用了方法:DELETE而不是在ajax调用中使用以下方法

$.ajax({
    headers: {...},
    url: self.attr('href'),
    type:"post",
    data: { _method:"DELETE" },
    success: function(data) {...},
    error: function(data) {...}
});

Laravel将在POST中查找\u方法,然后如果找到该方法,将使用DELETE请求。

更新:(因为这个答案,nietonfir

您可以像这样直接尝试DELETE方法(如果不起作用,请尝试另一种方法):

$.ajax({
    headers: {...},
    url: self.attr('href'),
    type:"DELETE",
    success: function(data) {...},
    error: function(data) {...}
});
 类似资料:
  • 我有一个非常简单的Spring引导应用程序,它由以下代码保护: 这个想法是为了保护“admin”部分。它公开了一个RESTAPI。问题是所有的帖子都被退回了 405方法不允许 如果我从应用程序中删除安全启动器,它就会工作。这让我相信安全配置是问题所在。但我不知道怎么做。

  • 问题内容: 我正在开发flask注册表格,但收到错误消息: 码: registration.html: 当我访问时,我收到错误消息。我究竟做错了什么? 问题答案: 这是因为在定义路由时仅允许POST请求。 当你在浏览器中访问时,它将首先执行GET请求。只有提交表单后,浏览器才会执行POST。因此,对于像你这样的自我提交表单,你需要同时处理两者。 使用 应该管用。

  • 问题内容: 我打算使用Ajax将跨域请求发送到soap Web服务。Web服务的URL是:http://example1.asmx?op = GetVOD 我的代码: 在IIS 7服务器端,我已经将这些行添加到文件web.config中 当我在Chrome上运行客户端代码时,出现405错误: 有谁知道如何解决这个问题? 预先感谢 问题答案: 听起来像Web DAV正在阻碍。这是删除它的配置: ht

  • 我正在尝试使用angularJs和$http发布一个表单。post方法。但每当我执行此函数时,它都会给我以下错误:加载资源失败:服务器响应状态为405(不允许使用方法),我不知道该怎么办。(Im使用visual studio 2015)

  • 我试图用jQuery做一个POST请求,但是我得到了一个错误405(不允许使用方法),我正在使用Laravel 5 这是我的代码: jQuery 超文本标记语言 控制器 JQuery错误http://localhost/laravel5.1/public/empresas/eliminar/5405(不允许方法)。 url值为 数据值是 如果我更改为request它工作正常,但我想做一个post请

  • 我目前正在用Apache Camel(使用camel-spring)开发一个REST应用程序,并得到了一些令人困惑的行为。我在REST DSL中定义了一组endpoint,有些只是对另一个服务器的代理请求,有些则传递到我为数据聚合定义的路由上。DSL如下所示: 其思想是,没有完全匹配URI的任何请求都可以通过另一个系统(不是Apache Camel)进行代理。这使我不必为其他系统上的每个REST