Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 如何将JSON数据发布到Action方法?_Jquery_.net_Asp.net Mvc 4 - Fatal编程技术网

Jquery 如何将JSON数据发布到Action方法?

Jquery 如何将JSON数据发布到Action方法?,jquery,.net,asp.net-mvc-4,Jquery,.net,Asp.net Mvc 4,我正在向服务器(.Net)发送邮件,将数组传递到控制器操作时遇到问题。我尝试了几乎所有可能的组合,但没有任何运气。然而,其中一个问题让我感到困惑 如果我执行此请求: var dataArray = [ { /* some plain object */ }, { /* another plain object */ ], ... ]; $.ajax(url, { type: "post", data: { models: dataArray } }); 产生一个请求,发送数据如下

我正在向服务器(.Net)发送邮件,将数组传递到控制器操作时遇到问题。我尝试了几乎所有可能的组合,但没有任何运气。然而,其中一个问题让我感到困惑

如果我执行此请求:

var dataArray = [ { /* some plain object */ }, { /* another plain object */ ], ... ];

$.ajax(url, {
   type: "post",
   data: { models: dataArray }
});
产生一个请求,发送数据如下

models[0][property1]:value1
models[0][property2]:value2
...
models[1][property1]:value3
models[0][property2]:value4
...
不幸的是,.NETMVC4无法理解该请求。下面是一个相关的示例,我尝试了
traditional:true
,但发送到服务器的请求如下所示:

models:[object Object]
显然,它发送的不是对象,而是字符串
“[object object]”
。。。这个怎么了?我是否注定要为每个涉及非原语参数的请求发送序列化字符串(并且必须在服务器端手动反序列化它们)

注意:这是我的行动方法。就目前而言,我尝试的每一件事都有结果

  • 参数是大小正确的数组,但每个项都是新的未修改(空)对象或
  • 参数为空

    [HttpPost]
    public ActionResult UpdateModels(Models.SimpleModel[] models)
    

  • 尝试对数组使用
    JSON.stringify
    ,比如
    JSON.stringify(dataArray)

    更新 如果在使用ajax调用时使用stringify,MVC3会自动将字符串数据转换为.NET对象。我认为MVC4也是如此

    更新2

    将contentType属性设置为application/json;charset=utf-8

    尝试使用
    JSON.stringify
    作为类似
    JSON.stringify(dataArray)

    更新 如果在使用ajax调用时使用stringify,MVC3会自动将字符串数据转换为.NET对象。我认为MVC4也是如此

    更新2

    将contentType属性设置为application/json;charset=utf-8

    示例JQuery

    var MyConnectionList = {
        ColorList: []
    };
    
    function SendStream() {
        MyConnectionList.ColorList.push({
            "Name": 'Test1',
            "Color": 'red'
        });
    
        MyConnectionList.ColorList.push({
            "Name": 'Test2',
            "Color": 'Green'
        });
    
        $.ajax({
            url: url,
            data: JSON.stringify(MyConnectionList),
            async: true,
            type: 'POST',
            beforeSend: function (xhr, opts) {
            },
            contentType: 'application/json; charset=utf-8',
            complete: function () {  },
            success: function (data) {
            }
        });
    }
    
    样本控制器

    public ActionResult SendStream(List<Sample> ColorList)
    {
        return null;
    }
    
    公共操作结果发送流(列表颜色列表)
    {
    返回null;
    }
    
    示例JQuery

    var MyConnectionList = {
        ColorList: []
    };
    
    function SendStream() {
        MyConnectionList.ColorList.push({
            "Name": 'Test1',
            "Color": 'red'
        });
    
        MyConnectionList.ColorList.push({
            "Name": 'Test2',
            "Color": 'Green'
        });
    
        $.ajax({
            url: url,
            data: JSON.stringify(MyConnectionList),
            async: true,
            type: 'POST',
            beforeSend: function (xhr, opts) {
            },
            contentType: 'application/json; charset=utf-8',
            complete: function () {  },
            success: function (data) {
            }
        });
    }
    
    样本控制器

    public ActionResult SendStream(List<Sample> ColorList)
    {
        return null;
    }
    
    公共操作结果发送流(列表颜色列表)
    {
    返回null;
    }
    
    我尝试过,除非我手动反序列化字符串,否则它不起作用(因此,我需要接收字符串,而不是使用
    IEnumerable
    或对象数组)。我想知道.Net MVC4如何能够接受我发送的内容,而不是像这样一个傻瓜。但是,如果没有显式设置contentType,MVC4就无法理解JSON数据。我尝试过,除非手动反序列化字符串(因此,我需要接收字符串,而不是使用
    IEnumerable
    或对象数组)。我想知道.Net MVC4如何能够接受我发送的内容,而不成为这样一个混蛋。是的,但是如果没有显式设置contentType,MVC4不理解JSON数据。很好
    JSON.stringify(object)
    with
    contentType:'application/JSON;charset=utf-8'
    解决了这个问题!我现在可以接受我的论点了!谢谢很好
    JSON.stringify(object)
    with
    contentType:'application/JSON;charset=utf-8'
    解决了这个问题!我现在可以接受我的论点了!谢谢