【问题标题】:MVC5: Getting JSON via Ajax not correctly passing data to ControllerMVC5:通过 Ajax 获取 JSON 未正确将数据传递给控制器
【发布时间】:2015-10-13 15:05:04
【问题描述】:

我是 MVC 的新手,我有一个关于 MVC / AJAX 调用的问题。

我正在尝试从 MVC 控制器取回数据,但它一直说传入参数为 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中签入并且参数正确传递如下:

但它给了我“id”参数的以下错误

Exception Details: System.InvalidOperationException: Nullable object must have a value.

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

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

【问题讨论】:

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


    【解决方案1】:

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

    更多关于 ajax 的内容可以到in it's documentation

    【讨论】:

      【解决方案2】:
      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) {}
      });
      

      【讨论】:

      • 请详细说明:为什么您的代码应该工作而问题中的代码不能工作? SO不鼓励仅使用代码的答案。另外,您的解决方案与接受的答案有何不同?
      猜你喜欢
      • 1970-01-01
      • 2019-07-16
      • 1970-01-01
      • 1970-01-01
      • 2017-11-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多