La matriz asociativa en bucle for usando jQuery.post() da como resultado que solo se almacene la última entrada
Frecuentes
Visto 254 veces
0
Estoy tratando de extraer contenido xml del servidor usando jQuery.post () en un bucle for en una lista de múltiples nombres de documentos. Solo la última respuesta se almacena con éxito en la matriz asociativa, mientras que las otras entradas terminan indefinido.
var pagedata = new Array () ;
loadpagexml = function ( liststring ) {
var pagenames = liststring.split(',') ;
for ( var i in pagenames ){
xmltoget = pagenames[i]+'.xml' ;
$.post( xmltoget , function(data) {
pagedata[ pagenames[i] ] = data ;
}) ;
}
}
var listofpages = 'poo,dung,corn' ;
loadpagexml ( listofpages )
>pagedata['poo']
undefined
>pagedata['dung']
undefined
>pagedata['corn']
#document
1 Respuestas
3
Tiene un problema de cierre con su devolución de llamada, por lo que el valor capturado siempre es el último del bucle, especialmente porque se trata de una operación asíncrona.
Debería poder hacer esto:
(function(id, url)
{
var idInternal = id;
$.post(url, function(data)
{
pagedata[pagenames[idInternal]] = data;
});
})(i, $xmlToGet);
contestado el 03 de mayo de 12 a las 20:05
No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas javascript jquery for-loop associative-array .post or haz tu propia pregunta.