AJAX - Llamada iterativa a una URL

 
Vista:

Llamada iterativa a una URL

Publicado por jonef (1 intervención) el 12/07/2006 10:03:10
Hola,

estoy comenzando con esto del AJAX, y he llegado a un punto que no se como avanzar. Digamos que lo que hago es ir llamando a una url para conseguir un html con una tabla que contiene una fila. Dependiendo de un parametro de la URL que se llama pagina, al hacer la petición, me devuelve cada vez que aumento la pagina, la siguiente fila de la tabla.

Es por ello opr lo que quiero ir llamando iterativamente a la URL esta, cambiando cada vez el numero de pagina, para así ir obteniendo una tabla a modo de listado.

Si hago una sola llamada me lo hace bien, pero si hago más de una, al ser esto asincrono, pues como k no me hace nada coherente.

¿Hay alguna forma de llamar varias veces seguidas a una misma URL para ir concatenando los resultados que me vaya devolviendo en un contenedor???

Espero que me hayan entendido y me puedan ayudar,

Muchas gracias!!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Alejandro

Llamadas iterativas a una URL y concatenación de resultados

Publicado por Alejandro (17 intervenciones) el 27/02/2024 16:53:57
Sí, Jonef, puedes realizar llamadas AJAX de manera iterativa y concatenar los resultados. La clave está en manejar adecuadamente la asincronía de las solicitudes. Una forma de lograr esto es utilizando Promesas y el método `Promise.all()` para esperar a que todas las solicitudes se completen antes de continuar.

Aquí hay un ejemplo básico usando JavaScript y la API Fetch:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
// Función para hacer una solicitud AJAX y devolver una Promesa
function obtenerTabla(pagina) {
    return fetch('tu_url_aqui?pagina=' + pagina)
        .then(response => response.text());
}
 
// Función para realizar llamadas iterativas
function realizarLlamadasIterativas() {
    var resultados = []; // Almacena los resultados de cada llamada
 
    // Hacer varias llamadas, por ejemplo, las primeras 5 páginas
    var paginas = [1, 2, 3, 4, 5];
 
    // Utilizar Promise.all para esperar a que todas las solicitudes se completen
    return Promise.all(
        paginas.map(pagina => obtenerTabla(pagina))
    ).then(tablas => {
        // Concatenar los resultados obtenidos
        resultados = resultados.concat(tablas);
 
        // Puedes hacer algo con los resultados aquí (por ejemplo, agregar al DOM)
        console.log(resultados);
 
        // Devolver los resultados o hacer más cosas si es necesario
        return resultados;
    });
}
 
// Llamar a la función para realizar las solicitudes iterativas
realizarLlamadasIterativas().then(resultados => {
    // Hacer algo con los resultados finales si es necesario
    console.log("Llamadas iterativas completadas:", resultados);
}).catch(error => {
    console.error("Error:", error);
});

En este ejemplo, `obtenerTabla` devuelve una Promesa que se resuelve con el contenido HTML de la tabla. La función `realizarLlamadasIterativas` hace varias llamadas iterativas usando `Promise.all()`, y luego concatena los resultados obtenidos.

Ajusta este código según tus necesidades y la estructura exacta de tu aplicación. Ten en cuenta que este es un enfoque básico, y podrías necesitar adaptarlo según la biblioteca AJAX que estés utilizando o cualquier otro detalle específico de tu aplicación.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar