【问题标题】:Send data to MVC controller using JSON使用 JSON 向 MVC 控制器发送数据
【发布时间】:2013-12-28 02:30:02
【问题描述】:

我正在使用 JQuery Ajax 对 ASP.NET MVC 控制器进行简单调用。这是我的代码

   function postdata(idno) {
   console.log(idno);

   $.ajax({
        type: 'POST',
        url: "/IM/GetMessages",
        contentType: 'application/json',
        dataType: 'json',            
        data: JSON.stringify({ 'fUserId': idno }), 
        success: function (data) { /*CODE*/

    });}

控制器长这样

     [HttpPost]
     public ActionResult GetMessages(decimal? fUserId)
     {
        var list = WebUtility.IMMessages.Where(p =>
            (p.ToUserId == Session.UserId  && (!fUserId.HasValue || fUserId.HasValue && p.User == fUserId.Value)))
            .OrderBy(p => p.CreatedDateTime)
            .Select(p => new { MessageId = p.RecordId, MessageBody = p.Description1 });

        return Json(list, JsonRequestBehavior.AllowGet);
     }

问题是我的数据没有传递给我的控制器,而是“null”传递。我该如何纠正这个问题?我正在控制台上观看“idno”,一切似乎都很好。

【问题讨论】:

  • 尝试查看浏览器的网络选项卡以查看请求中发送的内容,并尝试将参数更改为不可为空的小数(尽管我认为这无关紧要)。
  • 在网络选项卡上,一切似乎都很好,实际上我给你的代码现在正在工作,显然我专注于我的代码的错误部分。感谢您如此快速的回答,并为我迟到的回复感到抱歉。

标签: jquery ajax asp.net-mvc json


【解决方案1】:

快速搜索在 Stack Overflow 上找到了很多与此问题相关的资料。从this answer 提取,尝试更改:

data: JSON.stringify({ 'fUserId': idno }),

到这里:

data: "fUserId=" + JSON.stringify(idno),

【讨论】:

    【解决方案2】:

    如果你问我,没有理由将单个参数转换为 JSON。而是这样做:

    $.ajax({
        type: 'POST',
        url: "/IM/GetMessages?fUserId=" + idno,
        dataType: 'json',            
        success: function (data) { /*CODE*/
    });
    

    这样你仍然可以取回 JSON,但你传递了单个参数值。现在,如果您真的需要发送一个对象,我看不出您的代码有什么问题。您可能想要声明一个 javascript 变量并将其转换为 json 对象,如下所示:

    var myVar = { fUserId: idno };
    

    然后在你的 ajax 请求中使用它:

    $.ajax({
        type: 'POST',
        url: "/IM/GetMessages",
        contentType: 'application/json',
        dataType: 'json',            
        data: JSON.stringify(myVar), 
        success: function (data) { /*CODE*/
    
    });
    

    我每天都这样做,它适用于可空和不可空类型...

    【讨论】:

    • 很高兴您给出了详细的答复。你说得对,我的代码没有问题,它现在可以工作了,实际上我不知道真正的问题是什么。
    【解决方案3】:

    你应该能够做到这一点:

    data: { fUserId: idno }
    

    【讨论】:

      【解决方案4】:

      我的代码什么都没改变但它现在可以工作了。我认为还有另一个问题会影响传递数据。我通常在我的代码中更改了很多东西,现在实际上我不知道问题到底是什么。也许解决方案只是重新启动我的 Web 应用程序并清除 Web 浏览器中的所有缓存和 cookie。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-11-26
        • 2022-01-16
        • 2015-04-16
        相关资源
        最近更新 更多