使用的 Jquery Ajax 方法中的方法不允许错误

Posted

技术标签:

【中文标题】使用的 Jquery Ajax 方法中的方法不允许错误【英文标题】:Method not Allowed Error in Jquery Ajax Method used 【发布时间】:2014-06-24 05:42:01 【问题描述】:

我在 Asp.net MVC 3.0 中使用 jQuery Ajax 方法

我的 jQuery 代码是

$.ajax(
       type: "POST",
       url: "/HomePage/GetAllCategories",
       contentType: "application/json; charset=utf-8",                
       dataType: 'json',
       success: function (result) 
          alert(result);
    
);

而我的动作方法是

public JsonResult GetAllCategories()

     return Json(null, JsonRequestBehavior.AllowGet);

我收到了错误

POST http://localhost:50500/HomePage/GetAllCategories 405(方法不 允许)

我的调试器没有点击这个方法。

【问题讨论】:

尝试在 getAllCategories 方法上方添加 [AcceptVerbs(HttpVerbs.Post | HttpVerbs.Get)]。正在做类似的事情,但我不确定这是否会解决它。 控制器名称是什么? 我不认为这是一个编码问题。这是配置的问题。因为我使用了相同的代码并且无法重现它。但是检查这个解决方案 - blog.codelab.co.nz/2013/04/29/… 和这个 - ***.com/questions/1760607/… 【参考方案1】:

您已经在控制器中创建了 GET 方法,并且在 jquery AJAX 调用中将方法类型设置为 POST。

$.ajax(
       type: "GET",
       url: "/HomePage/GetAllCategories",
       contentType: "application/json; charset=utf-8",                
       dataType: 'json',
       success: function (result) 
          alert(result);
    
);

【讨论】:

Get 和 Post 我都用过,但问题还是一样【参考方案2】:

只需在网址末尾添加“/”即可:

 url: "/HomePage/GetAllCategories/",

【讨论】:

【参考方案3】:

好的,试试这个。我正在使用 getJson 调用来尝试获取相同的数据。

$.getJSON("/HomePage/GetAllCategories",        
            function(returnData) 
              alert(returnData);           
           );

【讨论】:

【参考方案4】:

在ajax调用中设置GET类型:

$.ajax(
       type: "GET",
       url: '@Url.Action("GetAllCategories","HomePage")' ,
       contentType: "application/json; charset=utf-8",                
       dataType: 'json',
       success: function (result) 
          alert(result);
    
);

和行动:

[HttpGet]
public JsonResult GetAllCategories()

     return Json(null, JsonRequestBehavior.AllowGet);

如果想通过 POST 进行,那么:

$.ajax(
           type: "POST",
           url: '@Url.Action("GetAllCategories","HomePage")' ,
           contentType: "application/json; charset=utf-8",                
           dataType: 'json',
           success: function (result) 
              alert(result);
        
    );

和行动:

    [HttpPost]
    public JsonResult GetAllCategories()
    
         return Json(null, JsonRequestBehavior.AllowGet);
    

【讨论】:

可能是第二个Action中的AllowPost。 @EhsanSajjad 方法类型为“[HttpPost]”,方法的返回类型为“JsonRequestBehavior.AllowGet”。据我所知,这在 MVC 中是不可能的。 我们可以在HttpPost之后返​​回JSON响应 @EhsanSajjad 方法未命中 以这种方式传递 url: url: '@Url.Action("GetAllCategories","HomePage")' 我怀疑 url 传递错误

以上是关于使用的 Jquery Ajax 方法中的方法不允许错误的主要内容,如果未能解决你的问题,请参考以下文章

jQuery .ajax() 405(不允许的方法)/跨域

“405 方法不允许” - 使用 ASP.NET jQuery ajax POST 时

HTTP 错误 405.0 - 不允许使用 Jquery ajax get 的方法

WCF REST 服务返回 405:jQuery AJAX GET 不允许的方法

带有ajax jQuery的405(不允许方法)(POST)方法

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