11487 sujets

JavaScript, DOM et API Web HTML5

Bonjour,

Voici mon premier message sur ce forum. Malgré les nombreux sujets traités sur le forum, je n'ai pas réussi à trouver réponse à mon problème, que voici :

Afin de traiter des données de type Json j'utilise Ajax pour gérer l'affichage de mes données. Tout fonctionne correctement, sauf que parfois sous certain navigateur, notamment Chrome et safari, on me renvoie l'erreur suivante :

statut : error
erreur : NetworkError: Failed to execute 'send' on 'XMLHttpRequest': Failed to load 'http://www...'

Donc parfois, je ne sais pas pourquoi, l'appel AJAX ne réussit pas. Ce problème apparaît lorsque je charge le site la première fois depuis longtemps et disparaît lorsque j'actualise la page html ou relance la fonction.

Pour ceux qui le souhaite voici mon code :
 
$.ajax({
	url: "include/research_liste.php",
	type: "POST",
	data:"offset="+offset+"&limit="+limit+"&latitude="+latituder+"&longitude="+longituder+"&radius="+radius+"&idcat="+idcat+"&idSubCategory="+idSubCategory+"&keywords="+keywords+"&l="+location+"&pmin="+pmin+"&pmax="+pmax+"&limitcran="+limitcran+"&page="+page,
	dataType: "json",
	async: false,
	cache:false,
	beforeSend : function() { 
		annoncesList.innerHTML= '<div id="loadingliste"></div>';	
	},
	success : function(data){ 
		$("#loadingliste").hide();
			if(data == 10){
				var markerlocations=initializept();
				annoncesList.innerHTML= '<div class="noResult"><p>'+textNoResult+'</p></div>';
				if(searchtri==1){}else{initialize(markerlocations,map);}
			}else if((data == 900)||(data == 901)||(data == "")){
				var markerlocations=initializept();
				annoncesList.innerHTML= '<br/><div class="noResult"><p>'+textSearch+'</p></div>';
				initialize(markerlocations,map);
			}else if(data==1100){							
				var markerlocations=initializept();
				var textNoAdd ="<?php echo $str_no_announce_available; ?>";
				annoncesList.innerHTML= '<div class="noResult"><p>'+textNoAdd+'</p></div>';
				clearMarkers();	$("#resultatliste").hide();
				if(searchtri==3){idFilterCadre.fadeIn(200);}else{idFilterCadre.hide();}
				initialize(markerlocations,map);		
			}else{	
				idFilterCadre.fadeIn(200);
				annoncesFilter.innerHTML= data['filtrecat'];
				annoncesssFilter.innerHTML= data['filtresscat'];
			}
	},
	error:function(resultat, statut, erreur){
		annoncesList.innerHTML= '<div class="noResult"><p>'+textNoError+'</br>Résultat'+resultat+'</br>statut'+statut+'</br>erreur'+erreur+'</p></div>';
	}
});
			


Si quelqu'un à des réponses ou des pistes, je suis preneur Smiley cligne
Modifié par kimoji84 (19 Sep 2014 - 11:52)
Salut,

Je ne sais pas si cela va pouvoir t'aider, mais j'ai rencontré le problème également.
Le genre de bug obscur dont je ne comprend toujours pas pourquoi cela fonctionne désormais.

Bref, est ce que ton data peut être vide ? L'envoie tu à chaque fois ?

J'avais le soucis lorsque je ne mettais pas l'attribut data à mon appel AJAX, soucis que j'avais également lorsque mon data était un objet vide (ie : {})

J'ai donc du rajouter un magnifique data:{"debug":"debug"} ...
Pas classe comme solution mais si quelqu'un connait mieux, je suis preneur !
Effectivement ma "data" revient parfois vide, d'où l'erreur.

Néanmoins cette erreur se produit pas tout le temps et pas sur tous les navigateurs Smiley bawling

Après quelques recherches, je me suis penché sur le cross-domain

J'ai donc ajouté à mon fichier php :
header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Headers: Origin, X-Requested-With, Content-Type, Accept');

Ça a l'air de fonctionner pour le moment, je ne vois plus le bug