11550 sujets

JavaScript, DOM et API Web HTML5

Bonjour,
Alors voila, je voudrais faire ce qui suit en utilisant php et ajax.

Alors j'ai une page ajax qui s'appelle "son.php", qui est recharger toutes 2 secondes par ajax .

Cette page affiche simplement une variable php qui est "$son_messages", c'ette variable est soit "ok" soit vide.

Alors mon probleme est le suivant:

Je voudrais recuperer le resultat de cette variable par ajax, c'est a dire que mon script ajax lise ou recupere la variable $son_message en question et "agisse", suivant la valeur de cette variable.
ar exemple : if($son_messages=="ok") alors on apelle une fonction qui s'appelle jouer_son() ou tout autre evenement, comme l'ouverture d'une pop up par exemple.

Alors j'essaie d'etre le plus claire que possible.

Alors voici mes codes.

Le code qui appelle la page par ajax :


<script language="javascript" type="text/javascript">
function refresh_div() {
var xhr_object = null;
if (window.XMLHttpRequest) {
xhr_object = new XMLHttpRequest();
} else if (window.ActiveXObject) {
try {
xhr_object = new ActiveXObject('Microsoft.XMLHTTP');
} catch(e) {
}
} else {
}
var method = 'GET';
var filename = 'son.php';
xhr_object.open(method, filename, true);
xhr_object.onreadystatechange = function() {
if(xhr_object.readyState == 4) {
var tmp = xhr_object.responseText;
document.getElementById('div_son').innerHTML = tmp;
}
};
xhr_object.send(null);
}
window.onload = function() {
setTimeout(refresh_div, 2000);
};
</script>


Ma page "son.php" affiche simplement une variable, c'est elle que je veux recuperer.


<? echo $son_messages ;?>


Merci de m'aider
J'ai deja passé des jours desus, sans resultats

A bientôt
a écrit :
Ma page "son.php" affiche simplement une variable, c'est elle que je veux recuperer.


mais tu l'as dejà non? dans la variable tmp.

tu rajoutes donc des traitements dans ta fonction handler, ici anonyme.
c'est cette fonction qui defini les réactions a une reponse d'ajax.

tes reponses a action tu dois les coder en js. ton test ne se fait pas sur du php!
le js ne permet pas d'écrire du php. seulement l'inverse est possible php => js.


moi pour rajouter jouer_son dans le cas où la reponse vaut ok.

je mettrais çà

xhr_object.onreadystatechange = function() {
 if(xhr_object.readyState == 4) {
  var tmp = xhr_object.responseText;
  document.getElementById('div_son').innerHTML = tmp;
   if (tmp == "ok")  { jouer_son(); }
}
}; 


edit:au pire dans jouer_son tu refais un appel ajax pour produire le son en php si tu sais pas faire en js.... mais sur une autre page...et encore jamais essayé je ne sais si ça peut marcher.
Modifié par CPascal (05 Apr 2010 - 11:08)
Salut
merci pour ta réponse mais justement, ça marche pas

j'ai fait un test ainsi pour vérifier




<script language="javascript" type="text/javascript">
function refresh_div() {
	var xhr_object = null;
	if (window.XMLHttpRequest) {
		xhr_object = new XMLHttpRequest();
	} else if (window.ActiveXObject) {
		try {
			xhr_object = new ActiveXObject('Microsoft.XMLHTTP');
		} catch(e) {
		}
	} else {
	}
	var method = 'POST';
	var filename = 'son.php';
	xhr_object.open(method, filename, true);
	xhr_object.onreadystatechange = function() {
		if(xhr_object.readyState == 4) {
			var tmp = xhr_object.responseText;
			document.getElementById('div_son').innerHTML = tmp;
			   if (tmp == "ok")  { 
        alert("son ok") ;			  
          }
		var timer=setTimeout("refresh_div()",5000); // rafraichie toute les 1sec
		}
	}
	xhr_object.send(null);
}
</script>

Merci de m'aider
j'ai repris ton code , sans le changer mais en rajoutant les éléments minimums pour pouvoir le tester.

ne pas sous-estimer l'importance dans un exemple ajax du fait d'avoir une structure html valide avec html head body.... et puis il me fallait un div d'id_son sinon erreur et quelquechose lançant ta fonction. j'ai fai un lien avec onclick.

et ça fonctionne chez moi.


<html>
<head>
<script language="javascript" type="text/javascript"> 
function refresh_div() { 
    var xhr_object = null; 
    if (window.XMLHttpRequest) { 
        xhr_object = new XMLHttpRequest(); 
    } else if (window.ActiveXObject) { 
        try { 
            xhr_object = new ActiveXObject('Microsoft.XMLHTTP'); 
        } catch(e) { 
        } 
    } else { 
    } 
    var method = 'POST'; 
    var filename = 'son.php'; 
    xhr_object.open(method, filename, true); 
    xhr_object.onreadystatechange = function() { 
        if(xhr_object.readyState == 4) { 
            var tmp = xhr_object.responseText; 
            document.getElementById('div_son').innerHTML = tmp; 
               if (tmp == "ok")  {  
        alert("son ok") ;               
          } 
        var timer=setTimeout("refresh_div()",5000); // rafraichie toute les 1sec 
        } 
    } 
    xhr_object.send(null); 
} 
</script>
</head>
<body>
<div id="div_son">son</div>
<a href="#" onclick="refresh_div();return false">rafraichir</a> 
</body>
</html>


tu test avec quel navigateur?
Modifié par CPascal (06 Apr 2010 - 10:54)
Salut
Alors finalement, j'ai fait des recherches au lieu de poser des questions a tout va

Tout fonctionne maintenant

Alors je voudrais savoir autre chose,

je vois la valeur de tmp en faisant un alert

Je voudrais savoir comment recuperer le valeurs se trouvant dans tmp

Admettons si j'ai :
$truc1, $truc2, $truc3

je veux recuperer les valeurs de chacun , et les utiliser si besoin est

exemple,
si truc1=="ok" alors....
si truc 2=="ok" alors..

Mais pour cette partie je peux me debrouiller, je veux juste recuperer les variables qui sont dans temps

Merci encore de m'aider