11548 sujets

JavaScript, DOM et API Web HTML5

Bonjouru à tous,

Je me lance dans le jQuery, et j'ai une petite question à propos d'une fonction ajax avec un settimeout :

function ajax(div,url,temps) {
		$.ajax({
		  url: url,
		  cache: false,
		  success: function(html){
			Affiche(div,html);
			 setTimeout('ajax("' + div + '","' + url + '","' + temps + '");',temps);
		  },
		  error:function(XMLHttpRequest, textStatus, errorThrown){
			//alert(textStatus);
		  }
		  })
		  return false;
  }
  
  function Affiche(div,data) {
    $(div).fadeOut(500,function(){
		$(div).empty();
		$(div).append(data);
		$(div).fadeIn(500);
	});
  }
  
  $(document).ready(function(){
	  ajax('#onair','ajax/titre_onair.php',18000);
	  //ajax('#webradios','ajax/webradio.php',25000);
  });


Est-ce que s'est correct d'utiliser un SetTimeOut de cette façon dans mon code ? Je l'ai mis dans le bloc "success" car je veux être sur que j'ai eu le retour ajax avant de relancer une autre demande ajax.

Avant j'avais mon Settimeout en dehors du bloc ajax mais quand je laissais tourner la page quelques heures, il faisait planter les naviguateurs car apparement il n'attendais pas la réponse Ajax.


Merci pour vos suggetions Smiley smile

Bonne journée

Fabien
Modifié par fabienfs (22 Oct 2009 - 17:38)
Ca doit marcher... mais attention, s'il n'y a pas de réponse ( ou une erreur ), la fonction "ajax" ne sera jamais relancée.
Hello,

Alors à la limite je peux réappeler ma fonction ajax() dans l'évent error ?

Merci pour ta réponse,

Fab
Et tant que j'y suis, j'ai vu qu'il existait une fonction $.ajaxTimeout, ne serait-ce pas plus facile que de devoir utiliser un setTimeout "basique" ?
salut,

tu peux essayer d'utiliser l'option 'complete', la fonction que tu mets dedans est alors executée après que les callback success et error ont été lancées.
Yes, merci bcp pour l'info Smiley smile

Par contre je ne sais toujours pas si c'est mieux d'utiliser le ajax.timeout.

Merci

Belle soirée,
Salut,

Je croit que ajax.timeout correspond à la durée accordé à une requête pour qu'elle s'effectue complétement, un peu comme avec l'objet XmlHttpRequest.