【问题标题】:Json Received data = nullJson 接收到的数据 = null
【发布时间】:2014-02-22 18:32:51
【问题描述】:

您好,我有这样的 json 请求:

$.ajax({
        url: "/DeviceUsage/FreeDevice",
        type: "POST",
        data: JSON.stringify({ data: Ids }),
        error: function (data) {
            alert("error " + data);
        },
        success: function (data) {
            if (data === "") {
                alert("succes")
            }
            else {
                alert(data);
            }
        }
    });

其中 Ids = var Ids = new Array();(全整数)

我的 Json 看起来像这样:

{"data":[38,40,41]} 

我接收 Json 的方法:

[HttpPost]
public JsonResult FreeDevice(FreeDeviceModel m)
{
    return Json("");
}

还有我的 ViewModel:

public class FreeDeviceModel
{
    public List<int> data { get; set; }
}

我用 Json 验证器 Json2C# 交叉检查了所有内容

而且一切看起来都是正确的,那么为什么 FreeDevice 方法没有收到任何内容?

为了澄清,我对此有疑问:

数据应该是 3 个元素的列表,但为空

【问题讨论】:

  • 我更新了我的问题。我记得 freeDevice 没有收到任何东西
  • 所以 ajax 调用进入了它提醒数据的条件,对吧?
  • 好的,我提供了我有问题的东西的屏幕截图;)

标签: c# jquery ajax asp.net-mvc json


【解决方案1】:

检查下面的代码应该可以工作

Json 调用

var FreeDeviceModel = {};
FreeDeviceModel.data = new Array();
FreeDeviceModel.data[0] = 39;
FreeDeviceModel.data[1] = 40;
FreeDeviceModel.data[2] = 41;
var object = JSON.stringify({ FreeDeviceModel: FreeDeviceModel });
$.ajax({
    type: "POST",
    url: "/Home/FreeDevice",
    contentType: 'application/json; charset=utf-8',
    data: object,
    dataType: 'json',
    cache: false,
     error: function (data) {
        alert("error " + data);
    },
    success: function (data) {
        if (data === "") {
            alert("succes")
        }
        else {
            alert(data);
        }
    }
});

控制器调用

  [HttpPost]
    public JsonResult FreeDevice(FreeDeviceModel FreeDeviceModel)
    {
        return Json("");
    }

【讨论】:

  • 好的,我接受这个答案。你写的和我在自我回答中写的一样;)缺少 ContentType!
【解决方案2】:

您是否尝试将数据类型设置为 JSON

dataType: 'json',
data: {"data":[38,40,41]} 

希望对您有所帮助...

【讨论】:

  • 硬编码数据不是选项;)
  • 我的意思是直接添加你的 json 而不使用 stringify 并将 dataType 设置为 json :)
  • 我知道,检查过了,但没有效果
  • 猜猜this会帮你搞定
【解决方案3】:

好的。 添加这一行:

contentType: "application/json; charset=utf-8",

修复一切!

【讨论】:

    【解决方案4】:

    你应该试试这样的:

    public JsonResult FreeDevice(string details)
    {
    FreeDeviceModel tempRecord = JsonConvert.DeserializeObject<List<FreeDeviceModel>>(details);
    }
    

    【讨论】:

      【解决方案5】:

      试试吧:

      data: JSON.stringify(Ids), 
      

      【讨论】:

      • 修改后仍然为空
      猜你喜欢
      • 2020-03-20
      • 2021-08-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-15
      • 2021-12-15
      • 1970-01-01
      • 2015-01-02
      相关资源
      最近更新 更多