no save
Assistance
Achat
News

Forum | webmastering
[Ajax] Appel d'une méthode PHP via Ajax ?
kij_82, le jeu. 25 janv. 2007 à 15:33:38
J'ai ta solution :)

Les objets XMLHttpRequest de Javascript : ce sont des objets que tu instancie et appelle depuis un fonction javascript, et qui permettent de faire appel, par exemple puisque c'est ton cas, à un fichier de traitement PHP, et à interpréter son retour.

Je te met un exemple ici tout simple pour que tu comprenne le principe :

Une page nommée "test.php" :


<script language="javascript">

function fonction ( ){

var texte = document.getElementById("champ").value;

var xhr_object = null;

if(window.XMLHttpRequest) // Firefox
xhr_object = new XMLHttpRequest();
else if(window.ActiveXObject) // Internet Explorer
xhr_object = new ActiveXObject("Microsoft.XMLHTTP");
else { // XMLHttpRequest non supporté par le navigateur
alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest...");
return;
}

xhr_object.open("POST", "./traitement.php", true);

xhr_object.onreadystatechange = function() {
if(xhr_object.readyState == 4) {
//alert(xhr_object.responseText); // DEBUG MODE
// --- ICI le retour (c'est à dire tout ce qui est écrit dans le fichier de traitement)
// --- est interprété, donc il suffi d'écrire du code JS dans traitement.php pour
// --- qu'il soit interprété au retour.
eval(xhr_object.responseText);
}
}

xhr_object.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
// --- ICI TU PASSE TES ARGUMENTS AU SCRIPT :
var data = "donnee="+texte;
xhr_object.send(data);

}

</script>

<form>
<input type="text" id="champ">
<input type="button" value="enregistrer" onclick="javascript:fonction()">
</form>


et la page 'traitement.php', située au même endroit :

<?php

// --- On écrit un script JS pour qu'il soit interprété dans l'objet
// --- XHR au retour du script
echo "alert('Valeur a enregistrer dans la base : ".$_POST["donnee"]."');";
// --- Mais on peut faire toute sorte de chose,
// --- Comme mettre à jour sa base de donnée,
// --- sélectionner dans la base et retourner des résultats pour mettre
// --- à jour graphiquement une interface, et ce,
// --- sans le moindre rechargement de page que ce soit !

?>


Voilà, bon courage pour la suite.

PrécédentSethpolma
janv. 07
Sethpolma
janv. 07
Suivant
REPONSES
kij_82
janv. 07
Sethpolma
janv. 07
monsieur propre
janv. 07
Faust
26 sept.
Version Web
Réalisé par RedShift
no save