Tôi có một trang kiểu bảng có các hàng. Mỗi hàng có một hộp kiểm. Tôi có thể chọn tất cả/nhiều hộp kiểm và nhấp vào "gửi" và những gì là một cuộc gọi Jquery ajax cho mỗi hàng.Cách biết khi nào tất cả cuộc gọi ajax hoàn tất
Về cơ bản tôi có biểu mẫu cho mỗi hàng và tôi lặp lại tất cả các hàng đã chọn và gửi biểu mẫu đó thực hiện cuộc gọi jquery ajax.
Vì vậy, tôi có một nút có quyền này:
$("input:checked").parent("form").submit();
Sau đó, mỗi hàng có:
<form name="MyForm<%=i%>" action="javascript:processRow(<%=i%>)" method="post" style="margin:0px;">
<input type="checkbox" name="X" value="XChecked"/>
<input type="hidden" id="XNumber<%=i%>" name="X<%=i%>" value="<%=XNumber%>"/>
<input type="hidden" id="XId<%=i%>" name="XId<%=i%>" value="<%=XNumber%>"/>
<input type="hidden" id="XAmt<%=i%>" name="XAmt<%=i%>" value="<%=XAmount%>"/>
<input type="hidden" name="X" value="rXChecked"/>
</form>
Hình thức này nộp để processRow:
function processRow(rowNum)
{
var Amount = $('#XAmt'+rowNum).val();
var XId = $('#XId'+rowNum).val();
var XNum = $('#OrderNumber'+rowNum).val();
var queryString = "xAmt=" + "1.00" + "&xNumber=" + OrdNum + "&xId=" + xId;
$('#coda_'+rowNum).removeClass("loader");
$('#coda_'+rowNum).addClass("loading");
$.ajax({
url: "x.asp",
cache: false,
type: "POST",
data: queryString,
success: function(html){
$('#result_'+rowNum).empty().append(html);
$('#coda_'+rowNum).removeClass("loading");
$('#coda_'+rowNum).addClass("loader");
}
});
}
Những gì tôi muốn biết là , từ đây là có một cách tôi có thể nói nếu tất cả các cuộc gọi Ajax của tôi đã hoàn tất. Lý do là muốn bật/tắt nút gửi trong khi tất cả các cuộc gọi này đang diễn ra.
Xin cảm ơn và xin lưu ý rằng tôi đã phải mangle tên biến do độ nhạy của ứng dụng, vì vậy nhiều người trong số họ có thể bị trùng lặp.
Trong khi phát hiện khi tất cả cuộc gọi ajax hoàn tất có giá trị cho bất kỳ thiết kế nào, tôi nghĩ giải pháp tổng thể tốt hơn là gửi nhiều hàng cùng một lúc. Gửi mỗi hàng như một bài đăng ajax riêng biệt sẽ thực sự * thực sự khó khăn trên hệ thống theo một số cách, và không phải là ý kiến của tôi về thiết kế tốt nhất. Tôi thậm chí sẽ đi xa như vậy để nói rằng * Tôi hứa * rằng một ngày nào đó, nếu bạn dính vào thiết kế này của một-ajax-call-per-row, bạn sẽ hối tiếc. – ErikE
Ngoài vấn đề thiết kế được chỉ ra bởi @ErikE, tôi ngạc nhiên không ai đề cập đến việc sử dụng Lời hứa để trả lời câu hỏi gốc. –