I have a table style page with rows. Each row has a checkbox. I can select all/many checkboxes and click ‘submit’ and what is does is a Jquery ajax call for each row.
Basically I have a form for each row and I iterate over all the checked rows and submit that form which does the jquery ajax call.
So I have a button that does:
$('input:checked').parent('form').submit();
Then each row has:
<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>
This form submits to 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'); } }); }
What I wanted to know is, from this is there a way I can tell if all my Ajax calls are complete. Reason being that want to enable/disable the submit button while all these calls are taking place.
Thanks and please note that I had to mangle my variable names due to the sensitivity of the application, so many of them may be duplicated.
The easy way
The easiest way is to use the
.ajaxStop()event handler:The hard way
You can also manually detect if any ajax call is still active:
Create a variable containing number of active Ajax connections:
just before opening new Ajax connection increment that variable
in
successpart check if that variable equals to zero (if so, the last connection has finished)As you can see, I’ve added also checking for return with error