que tienen una página de estilo de tabla con filas. Cada fila tiene una casilla de verificación. Puedo seleccionar todas/muchas casillas de verificación y hacer clic en "enviar" y lo que hace es una llamada Jquery ajax para cada fila.¿Cómo saber cuando todas las llamadas ajax están completos
Básicamente tienen una forma para cada fila y yo iterar sobre todas las filas controladas y presentar esa forma que lo hace la llamada jQuery Ajax.
Así que tienen un botón que hace:
$("input:checked").parent("form").submit();
A continuación, cada fila tiene:
<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>
Esta forma se somete a 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");
}
});
}
Lo que quería saber es , de esto hay una forma en que puedo decir si todas mis llamadas a Ajax están completas. La razón es que desea habilitar/deshabilitar el botón de enviar mientras se realizan todas estas llamadas.
Gracias y tenga en cuenta que tenía que destrozar mis nombres de variables debido a la sensibilidad de la aplicación, por lo que muchos de ellos pueden ser duplicado.
Si bien detectar cuando se completan todas las llamadas ajax tiene valor para cualquier diseño, creo que una mejor solución general es enviar varias filas a la vez. Enviar cada fila como una publicación separada de Ajax va a ser * realmente * difícil en el sistema de alguna manera, y no es (en mi opinión) el mejor diseño. Incluso iré tan lejos como para decir que * prometo * que algún día, si te apegas a este diseño de una-ajax-llamada-por-fila, te arrepentirás. – ErikE
Además del problema de diseño señalado por @ErikE, me sorprende que nadie haya mencionado el uso de Promises para responder la pregunta original. –