【问题标题】: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 请求提交变量应该是有效的。

【问题讨论】:

    标签: c# jquery .net ajax http-get


    【解决方案1】:

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

    【讨论】:

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

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

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

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-26
      相关资源
      最近更新 更多