我有一个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请求提交变量应该是有效的。
答案 0 :(得分:4)
哇。我在创建这篇文章时刚刚发现了自己问题的答案。我需要从控制器方法中删除static
。
答案 1 :(得分:0)
很高兴,你有解决方案。
然而,认为这可能有助于其他人.....
ajax调用未触及控制器中的Method的原因之一是:
如果控制器方法位于[授权]下,但用户试图在未登录的情况下点击。
解决方案:如果想允许未经授权访问该方法;标记该方法具有 [AllowAnonymous] ,否则登录然后尝试。