我正在加载这个对象数组:
$(document).ready(function () {
$("<div></div>").load("/Stats/Contents #stats", function () {
statcount = $(".list-group-item", this).length;
for (var j = 0; j < statcount; j++) {
statList.push(stat);
}
for (var i = 0; i < statcount; i++) {
statList[i].statId = document.getElementById("statId-" + (i + 1) + "").value;
statList[i].productDescription = document.getElementById("productType-" + (i + 1) + "").value;
statList[i].lastMeasuredInventoryAmount = document.getElementById("statLastMeasureAmount-" + (i + 1) + "").value;
}
)}
)}
....等等 然后我得到更改的值并保存它们,但是,在ajax post调用中,所有数组对象都是相同的(最后一个已分配),看起来它们被覆盖了。 有任何想法吗?我看到了这些延迟/承诺类型的代码,但不确定是否有更简单的方法。 感谢。
答案 0 :(得分:0)
听起来你接受了statList数组,然后将其推送到服务器,并进行相应的更改。您是否考虑过切换它并将结果从标记中取出并在保存点构建阵列,而不是构建和维护这样的列表?
$("btnSave").on("click", function(e) {
var data = [];
$(".list-group-item").each(function() {
data.push({
statId: $(this).find(".statid").val(),
.
.
})
});
您不需要为每个元素提供ID(但可以),因为我的示例使用CSS类来查找当前列表项中的元素。另外,如果这些是输入,您可以更有效地从根元素序列化它们......