AJAX Jquery MVC5 404错误

时间:2015-10-14 08:04:19

标签: jquery ajax asp.net-mvc-5 url-routing

我对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方法。

2 个答案:

答案 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}}