Json收到data = null

时间:2014-01-30 12:38:36

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

嗨,我有像这样的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#

交叉检查了所有内容

并且eveything看起来是正确的,为什么FreeDevice方法没有提供任何东西?

为了澄清我有这个问题: Data shoudl be List of 3 elements but is Null

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

5 个答案:

答案 0 :(得分:1)

检查以下代码是否有效

Json Call

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("");
    }

答案 1 :(得分:0)

您是否尝试将dataType设置为JSON

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

希望它有所帮助...

答案 2 :(得分:0)

确定。 添加此行:

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

修复了一切!

答案 3 :(得分:0)

你应该尝试这样的事情:

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

答案 4 :(得分:-1)

试试吧:

data: JSON.stringify(Ids),