11548 sujets

JavaScript, DOM et API Web HTML5

Bonjour,

J'ai un problème en Php et Javascript, et je ne parviens pas à trouver des réponses sous Google.

Je fais un appel Ajax et la réponse attendue est générée par un autre appel Ajax.
Mon premier appel Ajax est fait 3 fois dans la même page avec un paramètre différent. Ces appels permettent de remplir grâce à des innerHtml des divisions.

Après plusieurs tests, les retours de la fonction avec les paramètres différents retournent le bon résultat.
Appelé trois fois séparément (pas dans la même page), le résultat attendu est là, par contre appelé trois fois dans la même page, les trois appels retournent le même résultat (le dernier).

Le code sera surement plus clair:

PHP :

<div id='attachedFiles' style='text-align: left;'>
	<script type="text/javascript">
		getUpload("<?php echo $id_project;?>", "", "","<?php echo $_SESSION["login"];?>");
	</script>
</div>
<div id='attachedFilesSolution' style='text-align: left;'>
	<script type="text/javascript">
		getUpload("<?php echo $id_project;?>", "", "solution","<?php echo $_SESSION["login"];?>");
	</script>
</div>
<div id='attachedFilesWhereUsed' style=' text-align: left;'>
	<script type="text/javascript">
		getUpload( "<?php echo $id_project;?>", "", "whereUsed","<?php echo $_SESSION["login"];?>" );
	</script>
</div>


JS :

function getUpload(project, cr, type, login){
	if (window.XMLHttpRequest) // Mozilla, Safari, ...
    	xmlhttp = new XMLHttpRequest();
    else if (window.ActiveXObject) // IE
    	xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");


	xmlhttp.open("GET", "TestUpload.php?project="+project+"&cr="+cr+"&type="+type+"&login="+login+"&random="+Math.random());
	xmlhttp.onreadystatechange=function()
	{
		if (xmlhttp.readyState == 4)
		{
			// select the section to display
			if(type == ""){
				var div = "attachedFiles";
			}else if(type == "solution"){
				var div = "attachedFilesSolution";
			}else if(type == "whereUsed"){
				var div = "attachedFilesWhereUsed";
			}
			
			document.getElementById(div).innerHTML = xmlhttp.responseText;
				
		}
	};
	xmlhttp.send(null);
}


On voit donc ici que mes trois appels sont donc redirigé vers leur div respectives

Voici le code généré : :


<div id='attachedFiles' style='text-align: left;'>
	<script type="text/javascript">
		getUpload("156", "", "","zztest");
	</script>
</div>


Voilà plusieurs jours que je bloque dessus et la mise en production de cette fonctionnalité doit se faire très rapidement ohwell .

Merci d'avance pour votre aide Smiley biggrin .
Modifié par Gajilidd (12 Aug 2010 - 08:52)
Finalement mon problème viens de l'appel simultané qui n'est pas géré sous Safari et Firefox (les autres je ne sais pas).

Donc la résolution viendrais de la réécriture des appels ou de la synchronisation des appels.

Comment synchroniser les appels Ajax?
Mon problème est résolu,

xmlhttp = new XMLHttpRequest();
est prise comme variable globale alors que :
var xmlhttp = new XMLHttpRequest();
non

Donc le dernier appel Ajax écrasait donc mes autres xmlHtml