Javascript 在AJAX调用中传递JSON数组在MVC中发送null
我试图将一个json对象数组传递给我的控制器操作,但它总是以null的形式出现 Javascript代码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
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");
}
});