Méthode de chargement jquery ajax: une seule demande pour plusieurs éléments?

Hé, j’ai 10 éléments “ul.rating” sur ma page. Je veux actualiser ces éléments chaque minute.

var reload = 60000; var currentpage = window.location; setInterval(function() { $('ul.ratings').load(currentpage + " .ul.ratings >*", function() { //callback }); }, reload); 

Maintenant, j’ai les deux problèmes suivants.

  1. Je dois trouver ailleurs pour recharger chaque nouvel élément. En ce moment, je suis probablement en train de recharger l’élément SAME ul.ratings pour tous les éléments ul.ratings de ma page. Donc, il doit y avoir un moyen d’utiliser index () ou une autre méthode jquery pour recharger le premier élément ul.ratings avec le premier élément ul.ratings et recharger le cinquième élément ul.ratings avec le cinquième élément ul.ratings.

  2. Le tout est probablement une mauvaise façon de faire cela, mais je suppose que dans mon cas, il n’ya pas de meilleure façon. Est-il possible de faire la méthode de chargement une seule fois et d’attraper chaque élément ul.ratings et de remplacer le bon? En ce moment, je fais les appels de chargement s’il y a 10 éléments ul.ratings sur ma page.

Merci de votre aide!

Avez-vous le contrôle sur l’URL que vous appelez? Pouvez-vous lui renvoyer uniquement les données que vous souhaitez? Dans ce cas, laissez-le renvoyer JSON ou XML et rechargez vos ul avec ces informations.

Sinon, vous pouvez utiliser la fonction $ .get, charger le code HTML dans jQuery et rechercher vous-même les ul:

 var ulorigs = $('ul.ratings'); $.get('url', function (data) { var content = $(data); $('ul.ratings', content).each(function(ind,elem) { $(ulorigs.get(0)).html($(elem).html()); }); }); 

Je n’ai pas exécuté ce code moi-même.

Je n’ai pas de page pour essayer cela sur moi-même mais probablement:

 var reload = 60000; var currentpage = window.location; setInterval(function() { $('ul.ratings').each(function(i, el) { $(this).load(currentpage + " ul.ratings:eq(" + i + ") > li", function() { //callback }); }); }, reload); 

Je pense que votre principal problème ne tient pas compte du ciblage du contenu de ul que vous remplacez.

C’est probablement une bonne idée, car au final, vous parlez de tirer dix fois et de charger la page 10 de manière asynchrone.

Je suppose que cela signifie qu’il y a toujours:

 $("body").load(currentpage + " body > *") 

😉