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

本文关键字:方法 调用 不起作用 GET jquery ajax 为什么 | 更新日期: 2023-09-27 18:34:19

我有一个 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 请求提交变量应该是有效的。

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

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

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

但是,认为这可能会帮助其他人.....

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

如果控制器方法在[授权]下,但用户尝试在不登录的情况下点击。

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