我整个下午一直在努力学习如何完成这项工作,希望有人可以提供帮助。我有一个简单的要求,即运行已检查的复选框列表,从服务器检索一些数据,用数据填充元素展开它。到目前为止,我有以下代码;
function opentickedrows() {
$('input[type=checkbox]').each(function () {
if (this.checked) {
tid = $(this).attr('name').replace("t_", "");
$.ajax({
url: '/transfer_list_details_pull.php?id=' + tid,
type: 'GET',
success: function (data) {
$('#r' + tid).html(data);
$("#r" + tid).show();
$("#box" + tid).addClass("row-details-open");
}
});
}
});
}
我遇到的问题是,ajax调用所有似乎都发生得如此之快以至于' tid'没有在ajax调用中更新。从我所看到的内容来看,我相信我需要将其包含在一些带回调的函数中,但我无法理解如何。如果有人能让我走上正确的道路,我真的很感激。
答案 0 :(得分:2)
Ajax调用是异步的,因此在调用成功回调时,tid
具有$('input[type=checkbox]')
的最后一项的值。
您可以使用闭包:
function opentickedrows() {
$('input[type=checkbox]').each(function () {
if (this.checked) {
tid = $(this).attr('name').replace("t_", "");
(function(tid) {
$.ajax({
url: '/transfer_list_details_pull.php?id=' + tid,
type: 'GET',
success: function (data) {
$('#r' + tid).html(data);
$("#r" + tid).show();
$("#box" + tid).addClass("row-details-open");
}
});
})(tid)
}
});
}