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

时间:2014-12-15 16:22:37

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

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

2 个答案:

答案 0 :(得分:4)

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

答案 1 :(得分:0)

很高兴,你有解决方案。

然而,认为这可能有助于其他人.....

ajax调用未触及控制器中的Method的原因之一是:

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

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