MVC5:通过Ajax获取JSON没有正确地将数据传递给Controller

时间:2015-10-13 15:05:04

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

我对MVC很新,我对MVC / AJAX调用有疑问。

我试图从MVC Controller获取数据,但它一直说传入的参数是NULL。

我的Javascript调用如下,我硬编码id:1245作为测试。

$.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) {    
                }
            });

以下是Controller中的代码..

    [Route("MDT/Detail/{id}")]
    public JsonResult Detail(int? id)
    {
        ITS.Models.ComputerDetail cp = GetDataFromDatabase(id.Value);

        return Json(cp, JsonRequestBehavior.AllowGet);
    }

我已检入Firebug,参数传递正确如下:

enter image description here

但它为“id”参数

提供了以下错误
Exception Details: System.InvalidOperationException: Nullable object must have a value.

我无法弄清楚我做错了什么。你能帮我解决这个错误吗?

如果我使用此网址(http://localhost:6481/MDT/Detail?id=1245),则会返回JSON数据。但如果我使用(http://localhost:6481/MDT/Detail/1245),它会显示与JQuery AJAX调用相同的错误。那么,它必须是路由问题吗?

2 个答案:

答案 0 :(得分:0)

data: JSON.stringify({ id: 1245 }),替换为data: { id: 1245 },

有关ajax的更多信息,请in it's documentation

答案 1 :(得分:-1)

var youridvalue = 1254;

$.ajax({
    type: "POST",
    url: '@Url.Content("~/MDT/Detail")?id=' + youridvalue,        
    contentType: "application/json",
    dataType: "JSON",
    success: function(data) {
        console.log(data);
    },
    fail: function(data) {}
});