我有一个jquery键值对数组如下:
该部分的代码是:
$(document).on('click', '.chkItem', function () {
if ($(this).is(':checked')) {
product_ids[$(this).attr('id')] = "Checked";
} else {
delete product_ids[$(this).attr('id')];
}
});
这很好用,让我们进入下一部分。现在,我正在尝试将所有这些ID从我的视图发送到控制器“Analyze”和操作“Index”,如下所示:
$(".btnAnalyze").click(function () {
if (jQuery.isEmptyObject(product_ids) == true) {
alert("Array is empty");
}
else {
var postData = { values: product_ids };
$.ajax({
type: "POST",
url: "/Analyze/Index",
data: postData,
success: function (data) {
alert(data.Result);
},
dataType: "json",
traditional: true
});
}
});
我的行动如下:
public ActionResult Index(List<string> values)
{
string id2= "";
foreach (var id in values)
{
id2= id;
}
// I'm trying to fetch the ID values here that I added into the array, but I'm not sure how...
}
使用此当前方法,List值的内容为
"[object Object]"
这不是我想要的..当我将它们发送到动作索引时,我需要将所有ID很好地整理到列表中......
有人可以帮我解决这个问题吗?
答案 0 :(得分:1)
您正在使用一个对象,而不是一个数组,因此它说它是一个对象。你有两个选择:
使用实际数组:
var product_ids = [];
$(document).on('click', '.chkItem', function () {
if ($(this).is(':checked')) {
product_ids.push($(this).attr('id'));
} else {
product_ids.splice(product_ids.indexOf($(this).attr('id')), 1);
}
});
继续使用对象并使用Object.keys
获取属性名称(代码中的ID):
var postData = { values: Object.keys(product_ids) };
就个人而言,我喜欢#1,因为它更明确地表示您正在捕获已选中复选框的ID,并且对象的属性值始终为"Checked"
比任何有意义的东西,但是,嘿,JavaScripts&#39;像那样灵活:)。
答案 1 :(得分:0)
使用console.log(data.Result)
调试代替alert(data.Result)
,因为alert(data.Result)
将您的变量字符串化为[object Object]
。要打开控制台,请按F12