【发布时间】:2015-10-14 08:04:19
【问题描述】:
我是 MVC 的新手,我有一个关于 MVC / AJAX 调用的问题。
我正在尝试从 MVC 控制器取回数据,但它一直说 404 错误
"NetworkError: 404 Not Found - http://localhost:6481/MDT/Detail?id=4935"
我的 Javascript 调用如下,我硬编码 id:1245 作为测试。我尝试切换 POST 和 GET,但仍然没有运气
$.ajax({
type: "GET",
url: 'MDT/Detail',
data: JSON.stringify({
id: 1245
}),
contentType: "application/json",
dataType: "JSON",
success: function(data) {
console.log(data);
},
fail: function(data) {}
});
我在没有 JSON.stringify 的情况下试过了,错误还是一样(404)
$.ajax({
type: "GET",
url: 'MDT/Detail',
data: {
id: 1245
},
contentType: "application/json",
dataType: "JSON",
success: function(data) {
console.log(data);
},
fail: function(data) {}
});
以下是Controller中的代码..
[Route("MDT/Detail/{id}")]
public JsonResult Detail(int? id)
{
ITS.Models.ComputerDetail cp = GetDataFromDatabase(id.Value);
return Json(cp, JsonRequestBehavior.AllowGet);
}
我已经在Firebug中签入并且参数正确传递如下:
我无法弄清楚我做错了什么。你能帮我解决这个错误吗?
如果我使用 (http://localhost:6481/MDT/Detail/1245),它可以正常工作并返回 JSON 对象,但我无法从 JQuery AJAX 调用此 MVC 方法。
【问题讨论】:
-
如果你不字符串化(也没有必要),那么你需要删除
contentType: "application/json", -
url: '/MDT/Detail',您可以尝试在 MDT 之前添加/前导斜杠。 -
并使用
url: '@Url.Action("Detail", "MDT")',生成正确的网址,即/MDT/Detail -
我试过 /MDT/Detail、MDT/Detail/、/MDT/Detail/ 或 Url.Action、Url.Content 等,仍然显示 404 错误。
-
忘了提,在我添加路由属性之前,相同的代码都可以工作,因为我希望一个功能使用localhost:6481/MDT/Detail/1245 而不是localhost:6481/MDT/Detail?id=1245
标签: jquery ajax asp.net-mvc-5 url-routing