Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.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
Javascript 在AJAX调用中传递JSON数组在MVC中发送null_Javascript_Asp.net_Json_Ajax_Asp.net Mvc - Fatal编程技术网

Javascript 在AJAX调用中传递JSON数组在MVC中发送null

Javascript 在AJAX调用中传递JSON数组在MVC中发送null,javascript,asp.net,json,ajax,asp.net-mvc,Javascript,Asp.net,Json,Ajax,Asp.net Mvc,我试图将一个json对象数组传递给我的控制器操作,但它总是以null的形式出现 Javascript代码 function UpdateSelected() { var items = {}; //Loop through grid / sub grids and create json array $('.k-detail-row .k-grid').each(function () { var grid = $(this).data("kendoGr

我试图将一个json对象数组传递给我的控制器操作,但它总是以null的形式出现

Javascript代码

function UpdateSelected() {
    var items = {};

    //Loop through grid / sub grids and create json array
    $('.k-detail-row .k-grid').each(function () {
        var grid = $(this).data("kendoGrid");
        var selectedElements = grid.select();
        for (var j = 0; j < selectedElements.length; j++) {
            var item = grid.dataItem(selectedElements[j]);
            var json = item.toJSON();
            items = [].concat(items, json);
        }
    })

    //shift the first empty space out
    items.shift();

    //items is ready to send
    alert(JSON.stringify(items));
    $.ajax({
        cache: false,
        url: '/Update/GetSchematicsForSelectedVariants',
        type: 'GET',
        data: JSON.stringify(items),
        success: function (data) {
            alert("success");
        }
    });
}
所以我不确定这里出了什么问题。我的列表正在以null形式传入。我并不热衷于将json对象传递给控制器,但我相信我已经掌握了我需要的要点


有人能给我指出正确的方向吗?

我发现了问题所在。我的数据需要在AJAX请求中以以下方式传递。真不敢相信我真的错过了

$.ajax({
        cache: false,
        url: '/Update/GetSchematicsForSelectedVariants',
        type: 'POST',
        data: {'ListOfVariants' : items},
        success: function (data) {
            alert("success");
        }
    });

谢谢大家的评论,它为我指明了正确的方向。

我可能错了,但我认为你的问题可能是你将数组传递到
数据中,而不是键值中。将
类型:'get'
更改为
类型:'post'
或添加
[HttpGet]
到控制器方法。您需要将此类数据作为
POST
请求传递。当它是
GET
时,数据会附加到url。如果您想将其保留为
GET
,请尝试执行
processData:false
。感谢您的建议,但这两个建议都不起作用。我将该方法更改为POST,并尝试将控制器更改为HttpGet。尝试此@selthine,使用
[HttpPost]
将您的ajax类型更改为
POST
,并且不要对数据进行字符串化。
public class VariantViewModel
{
    public string Id { get; set; }
    public string Variant { get; set; }
}
$.ajax({
        cache: false,
        url: '/Update/GetSchematicsForSelectedVariants',
        type: 'POST',
        data: {'ListOfVariants' : items},
        success: function (data) {
            alert("success");
        }
    });