我对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方法。
答案 0 :(得分:4)
你必须发送id不像param,而是像url的一部分。将您的代码更改为:
$.ajax({
type: "GET",
url: 'MDT/Detail/1245',
contentType: "application/json",
dataType: "JSON",
success: function(data) {
console.log(data);
},
fail: function(data) {}
});
答案 1 :(得分:1)
答案就是不使用
JSON.stringify({ id: 1245 })
直接传递
data:{ id: 1245 }
带
在 [HttpPOST] 属性添加到Controller Action后,POST请求也正常工作。
根据您的ajax调用,MVC默认路由为{Controller} / {Action} / {id},Route为http://localhost:6481/MDT/Detail?id=4935,id为查询字符串参数,因此您需要使用Route为{{ 3}}