为啥这个对 C# 方法的 jquery ajax GET 调用不起作用?

Posted

技术标签:

【中文标题】为啥这个对 C# 方法的 jquery ajax GET 调用不起作用?【英文标题】:Why is this jquery ajax GET call to a C# method not working?为什么这个对 C# 方法的 jquery ajax GET 调用不起作用? 【发布时间】:2015-02-13 19:27:10 【问题描述】:

我有一个 C# .NET MVC 5 项目。我正在尝试从 ajax 向服务器上的控制器方法提交 GET 请求。问题是,即使调用了这个 jquery,GET 总是返回 404。这是 js:

 var theArguments =  "prefix": prefix, "level": level, "number": number ;
 $.ajax(
            url: "GetMasteryObjective",
            type: "GET",
            data: theArguments,
            //data: JSON.stringify( prefix: "prefix", level: "level", number: "number" ),
            //url: "/MasteryObjectiveAPI/GetMasteryObjective?prefix=" + prefix + "&level=" + level + "&number=" + number,
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: function () 
                console.log("Successfully queried the database to validate the given mastery objective.");
            ,
            error: function () 
                console.log("There was an error with trying to validate the mastery objective with the database.");
            
        );

如您所见,我尝试了几种提交变量的变体(已注释掉)。这是永远不会受到打击的控制器方法。

[HttpGet]
//[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public static MasteryObjective GetMasteryObjective(String prefix, String level, String number)

     //code here

同一控制器中的其他方法被发布到没有问题。所以也许我对 GET 有什么不明白的地方?我了解使用 GET 请求提交变量应该是有效的。

【问题讨论】:

【参考方案1】:

哇。我刚刚在创建这篇文章时发现了我自己的问题的答案。我需要从我的控制器方法中删除 static

【讨论】:

您的最后一句话不是答案的一部分,而是评论,所以我会在这里添加;这个用户有self answered他们自己的问题,这是一件好事!【参考方案2】:

很高兴,您已经找到了解决方案。

但是,认为这可能对其他人有所帮助.....

ajax 调用未命中控制器中的方法的原因之一是:

如果控制器方法在 [Authorize] 下,但用户试图在没有登录的情况下点击。

解决方案:如果要允许未经授权的访问该方法;标记该方法有[AllowAnonymous],否则登录后再试。

【讨论】:

以上是关于为啥这个对 C# 方法的 jquery ajax GET 调用不起作用?的主要内容,如果未能解决你的问题,请参考以下文章

为啥我的 Jquery Ajax 调用不起作用?(Asp.net MVC C#)

为啥vue不使用ajax

对jquery中的$.ajax二次封装 从而多次调用 今天一整天都在想这个事情

django为啥不能实现ajax

为啥 jQuery.sortable 的这个 ajax 会多次执行更新?

jQuery 通过 Ajax 在 ASP.NET MVC C# 中调用 Action 方法