J'ai une page qui contient un long contenu paginé. Maintenant, pour accéder à un seul élément, je veux charger les pages jusqu'à ce que j'ai trouvé l'élément désiré. Le problème est que mes boucles "while" sont toujours passées en boucle infinie. Après quelques recherches, j'ai trouvé qu'en raison du comportement asynchrone d'ajax il ne trouve jamais d'élément. voici le code, je travaille avecalors que l'élément n'a pas été trouvé load ajax
While pour le contenu de chargement jusqu'à ce que l'élément non trouvé:
$(document).ready(function(){
if(document.getElementById('selectedItem')) {
totalPages = $("#selectedItem").attr("totalPages");
trgtElementUrl = $("#selectedItem").val();
var targetElement = $("#" + trgtElementUrl);
i = 2;
//getting $('#'+trgtElementUrl).length always 0
while(!($('#'+trgtElementUrl).length)) {
$('#page' + i).trigger("click");
i++;
}
target_top = $('#'+trgtElementUrl).offset().top;
target_top = target_top - 10;
$('html, body').animate({scrollTop:target_top}, 500);
$(".summaries li").removeClass();
$('#'+trgtElementUrl).addClass('active');
}
});
et appel ajax en déclenchant événement click
$('a.loadMore').live("click",function(event){
$(this).hide();
$(".loaderImage").show();
event.preventDefault();
var link = $(this).attr("href");
$.ajax({
url: link,
dataType: "html",
success: function(data) {
if($('a.loadMore').parent().parent().hasClass('advertisingGrid')){
var items = $(data).find('ul.advertisingGridItems').html();
$(items).hide().appendTo('ul.advertisingGridItems').show('normal');
} else {
var items = $(data).filter('ul.summaries').html();
var subnav = $(data).filter('nav.subnav');
var itemLinks = $(subnav).find('ul').html();
$('div#pagination').remove();
$(items).appendTo('ul.summaries');
$(itemLinks).appendTo('.subnav ul');
}
$(".loaderImage").hide();
}
});
return false;
});
Cela fonctionne toujours bien avec appel ajax synchrone. Est-il possible de le faire fonctionner sans appel ajax synchrone. Merci
Qu'est-ce qui est synchrone à propos de cet appel? –
* Cela fonctionne toujours bien avec l'appel ajax synchrone. Est-il possible de le faire fonctionner sans appel ajax synchrone *? -> ** ajax ** signifie ** asynchrone ** JavaScript et XML – intuitivepixel
Non, car vous enverrez des milliers de requêtes ajax en même temps. –