Pb de Compatibilité Affichage Dynamique FF VS. ie

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Pb de Compatibilité Affichage Dynamique FF VS. ie

par Cyrano » 15 déc. 2006, 18:26

As-tu essayé de vérifier le retour avec par exemple :
alert(xhr.responseText);
:?:

par costadelo » 15 déc. 2006, 17:56

Pas de réponse ? :roll:

par costadelo » 13 déc. 2006, 13:15

Bon, j'ai fait évoluer mon problème, j'ai retiré l'évènement "Onclik='javascript:go()'" de ma balise <a id="presse" style="cursor:pointer;">.

L'évènement est donc géré par le code suivant (qui était déjà présent auparavant):
Presse = window.document.getElementById('presse');	
Presse.onclick = function() { go(); };
J'ai remplacé
presse = window.document.getElementById('presse'); 
par
Presse = window.document.getElementById('presse'); 
car IE transforme tous les ID en variable Javascript Pointant vers l'objet HTML désigné... c'est une source de conflit assez fréquant avec IE...

Mais le code plante ailleurs, à cet endroit la d'après ie:( :
window.document.getElementById('bloc').innerHTML = leselect;

Pb de Compatibilité Affichage Dynamique FF VS. ie

par costadelo » 13 déc. 2006, 11:53

Bonjour @tous.

Je souhaite mettre à jour dynamiquement et sans rechargement de page un bloc dans ma page lors d'un clique sur un bouton. Je vous poste mon code qui fonctionne très bien sous firefox, mais absolument pas sous ie qui m'annonce qu'il y a des erreurs inconnues....

page.php :

<!-- Bloc mis à jour -->
<div id="contain">
			
   <p id="bloc"><?php echo $bio;?></p>

</div>

<div class="dl">
<a id="presse" onclick="javascript:go();" style="cursor:pointer;">Extraits de presse</a> | (t&eacute;l&eacute;charger)
</div>

<!-- Formulaire qui envoi un id récupéré dans AJAX.ext_press.php -->
<form>
  <input type="hidden" id="id_art" value="<?php echo $_GET['id_art'];?>" />
</form>

<!-- Script d'envoi d'une variable en POST à AJAX.ext_press.php-->
<script language="javascript" type="text/javascript">

// Renvoie le texte de l'objet ActiveXObject le plus récent depuis une liste

var pickRecentProgID = function (idList){
				
var bFound = false

for(var i=0; i < idList.length && !bFound; i++){
try{
					  var oDoc = new ActiveXObject(idList[i]);
					  o2Store = idList[i];
					  bFound = true;
}catch (objException){
					  
};
				 
 };
				  
if (!bFound)
   throw ("Aucun ActiveXObject n'est valide sur votre ordinateur, pensez à mettre à jour votre navigateur");
idList = null;
				  
 return o2Store;
}

// Retourne un nouvel objet XmlHttpRequest
var GetXmlHttpRequest_AXO=null;
var GetXmlHttpRequest=function () {
if (window.XMLHttpRequest) {
					return new XMLHttpRequest()
}
else if (window.ActiveXObject) {
  if (!GetXmlHttpRequest_AXO) {
		GetXmlHttpRequest_AXO=pickRecentProgID(["Msxml2.XMLHTTP.5.0", "Msxml2.XMLHTTP.4.0", "MSXML2.XMLHTTP.3.0", "MSXML2.XMLHTTP", "Microsoft.XMLHTTP"]);
 }
   return new ActiveXObject(GetXmlHttpRequest_AXO)
}
				return false;
}

			
getXhr=GetXmlHttpRequest;
			
	/**
	* Méthode qui sera appelée sur le click du bouton
	*/			
						
function go(){
var xhr = getXhr();
// On défini ce qu'on va faire quand on aura la réponse
xhr.onreadystatechange = function(){
// On ne fait quelque chose que si on a tout reçu et que le serveur est ok
if(xhr.readyState == 4 && xhr.status == 200){
					leselect = xhr.responseText;
			
					window.document.getElementById('bloc').innerHTML = leselect;
			   }
			  }
			  			  xhr.open("POST","./AJAX_ext_presse.php",true);
			  
			  xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
			  			  // ici, l'id de l'artiste selectionné
			  id_art = window.document.getElementById('id_art');
			  Id_art = id_art.value;
			 
			  xhr.send("id_art="+Id_art);
			}	
			
			

		presse = window.document.getElementById('presse');		
		presse.onclick = function() { go(); };
		
	

</script>

AJAX.ext_press.php :
<?php

if(isset($_POST["id_art"])){
if (mysql_connect("localhost","login","mdp") ) {
if (mysql_select_db("mabase") ) {
				
$requete = "SELECT ex.description FROM extrait_presse AS ex, artiste AS a, art_extrait AS aex WHERE a.id_art=aex.id_art AND aex.id_extrait = ex.id_extrait AND aex.id_art =".$_POST["id_art"]." LIMIT 1";
//echo $requete;
if ($res = mysql_query($requete) ) {
				
					$nb= mysql_num_rows($res);
					
if($nb > 0){
						
						echo '<h2 style="color: #535947;
	font-size:14px;">Extrait de presse</h2><br />';
						
						while($row = mysql_fetch_array($res)){
							$description = utf8_encode($row['description']);
							echo $description;
						}
									
}else{
						echo "<div style='font-family:Verdana, Arial, Helvetica, sans-serif;font-size:10px;color:#C60D0A;font-weight:bold;'>Aucun extrait de presse pour cet artiste</div>";
}		
					
} else {
					echo "Erreur de requ&ecirc;te";
}
				
				
				
			
				
} else {
	echo "Erreur sélection de base de données";
}
} else {
	echo "Erreur de connexion mysql";
} 

} else {
	echo "Type d'artiste non défini";
}



?>