基本上我想循环遍历具有“data-id”属性和匹配ItemID的所有输入,然后按顺序将它们插入到数据库中。不幸的是,它们没有按正确的顺序插入数据库。
这是我的HTML:
<input id="control01" data-ItemId="11" value="xxx">
<input id="control02" data-ItemId="11" value="xxx">
<input id="control03" data-ItemId="12" value="xxx">
<input id="control04" data-ItemId="12" value="xxx">
<input id="control05" data-ItemId="12" value="xxx">
<input id="control06" data-ItemId="13" value="xxx">
<input id="control07" data-ItemId="13" value="xxx">
<input id="control08" data-ItemId="13" value="xxx">
<input id="control09" data-ItemId="14" value="xxx">
<input id="control10" data-ItemId="14" value="xxx">
<input id="control11" data-ItemId="14" value="xxx">
这是我的代码:
var ItemIDs = [12,13,14]; //Here's the given ID we're looking for
$.each(ItemIDs, function (index, value) {
//alert(value); If I add an alert here it'll be inserted in the correct order
$(":input[data-id='" + value + "']").each(function (index2, value2) {
//Code to insert its value into SQL database;
//PageMethods.AddItemToDB(ItemID);
});
});
我希望数据库中的结果为:
自动识别的ItemID
1个12
2个12
3个12
4个13
5个13
6个13
7个14
8个14
9个14
但这是我得到的:
自动识别的ItemID
1个12
2个12
3个13
4个14
5个14
6个13
7个14
8个12
9个13
我不知道为什么订单如此随机。我尝试在每个循环中添加一个警报,令我惊讶的是实际上修复了问题,否则它只是随机顺序。我在这做错了什么?我非常感谢任何帮助或建议!
答案 0 :(得分:1)
var IDArray = [];
$("input[data-ItemId]").each(function() {
if ($.inArray($(this).data("ItemId"), ItemIDs)) {
IDArray.push($(this).data("ItemId"));
}
});
我不确定您希望如何将这些值添加到数据库中,但如果该数组中存在这些值,则此代码会将它们添加到数组中(ItemIDs
)
答案 1 :(得分:0)
由于@Barmar提到在javascript中调用WebMethod是异步的,我最终在表中添加了一个新列,仅用于排序目的,然后在其中插入一个新索引。它终于以我想要的方式工作了!谢谢你的帮助!!