我最近开始了一个Asp.net Razor v3项目。这是我第一次使用它(在我只使用MVC和Web Forms之前)
我正在努力获得一个由jquery ajax函数调用的代码。在Chrome上调试时,我看到该脚本返回POST 404(未找到)
$.ajax({
type: "POST",
url: "../App_Code/GlobalSitesController/GetSiteTable",
data: "{'siteName': 'Some Site' , 'daysDiff': '0'}",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (response) {
document.getElementById("siteTable").innerHTML = response.responseText;
},
failure: function (response) {
document.getElementById("siteTable").innerHTML = "ERROR" + response.responseText;
},
error: function (response) {
document.getElementById("siteTable").innerHTML = "ERROR" + response.responseText;
}
});
public class GlobalSitesController : Controller
{
[HttpPost]
public string GetSiteTable(string siteName, int daysDiff)
{
return "some string";
}
}
首先我注意到我的项目未包含System.Web.Mvc
所以我通过Nugget添加了Microsoft.AspNet.Mvc
完整的Chrome错误是jquery-1.10.2.min.js:23 POST http://localhost:9997/App_Code/GlobalSitesController/GetSiteTable 404(未找到)。这是正确的URL,应该正常工作
答案 0 :(得分:0)
事实证明,url位需要采用以下形式
url: '@url.Action("GetSiteTable", "GlobalSitesController")',
(url需要初始化,如下所示)
System.Web.Mvc.UrlHelper url = new System.Web.Mvc.UrlHelper(HttpContext.Current.Request.RequestContext);