[Ajax] Appel d'une méthode PHP via Ajax ?
Fermé
Sethpolma
Faust - 26 sept. 2009 à 23:20
- Messages postés
- 66
- Date d'inscription
- mercredi 25 juin 2003
- Statut
- Membre
- Dernière intervention
- 8 mars 2007
Faust - 26 sept. 2009 à 23:20
A voir également:
- [Ajax] Appel d'une méthode PHP via Ajax ?
- Passer un tableau javascript en php via ajax ✓ - Forum - PHP
- Appelle d'une page php avec ajax ✓ - Forum - PHP
- Pb appel de methode php ( -> ) ds du html ✓ - Forum - PHP
- Appeler une fonction en php - Articles
- Appeler un numero de telephone via internet - Conseils pratiques - Internet
3 réponses
kij_82
25 janv. 2007 à 15:33
- Messages postés
- 4088
- Date d'inscription
- jeudi 7 avril 2005
- Statut
- Contributeur
- Dernière intervention
- 30 septembre 2013
25 janv. 2007 à 15:33
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" :
et la page 'traitement.php', située au même endroit :
Voilà, bon courage pour la suite.
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.
Sethpolma
25 janv. 2007 à 16:16
- Messages postés
- 66
- Date d'inscription
- mercredi 25 juin 2003
- Statut
- Membre
- Dernière intervention
- 8 mars 2007
25 janv. 2007 à 16:16
Merci de ta réponse. :-)
J'avais bien compris cela. Je souhaitais simplement appeller une fonction particulière dans un fichier spécifique, sans créer un fichier par fonction utilisée.
Cependant, je vais quand même créer une myriade de petits fichiers dans lesquels j'appelerai mes méthodes statiques.
J'avais bien compris cela. Je souhaitais simplement appeller une fonction particulière dans un fichier spécifique, sans créer un fichier par fonction utilisée.
Cependant, je vais quand même créer une myriade de petits fichiers dans lesquels j'appelerai mes méthodes statiques.
Dans ce cas, tu peux utiliser une page php qui sera la porte d'entrée :
interprete.php
Avec un switch sur la fonction à appeler :
$fonction = $_POST['fonction'];
switch($fonction)
{
case('addition')
// ma fonction
break;
default:
break;
}
Et dans tes pages HTML ou tes fonctions javascript, tu fais un appel comme ujn lien classique :
<a href="interprete.php?fonction=additionne">mon lien</a>
ou
function go()
{
var xhr = getXhr()
xhr.open("POST","interprete.php",true);
xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
xhr.send("fonction=additionne");
}
interprete.php
Avec un switch sur la fonction à appeler :
$fonction = $_POST['fonction'];
switch($fonction)
{
case('addition')
// ma fonction
break;
default:
break;
}
Et dans tes pages HTML ou tes fonctions javascript, tu fais un appel comme ujn lien classique :
<a href="interprete.php?fonction=additionne">mon lien</a>
ou
function go()
{
var xhr = getXhr()
xhr.open("POST","interprete.php",true);
xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
xhr.send("fonction=additionne");
}
Salut,
J'ai exactement le même besoin que l'auteur du message. La solution proposée avec le "script"
page -> ajax -> script -> methode -> page est selon moi une grosse faille de sécurité car il permet à un utilisateur mal intentionnné d'exécuter des méthodes d'une classe sans passer par une interface (que se passe t-il si l'utlisateur utilise directement le script en trafficant ses paquests avec TamperData ou autre?).
Néamoins une solution est peut-être envisageable grâce à une librairie du type jquery.
https://satoewarna.com/jqsajax/ .
Bonne chance et bonne continuation.
J'ai exactement le même besoin que l'auteur du message. La solution proposée avec le "script"
page -> ajax -> script -> methode -> page est selon moi une grosse faille de sécurité car il permet à un utilisateur mal intentionnné d'exécuter des méthodes d'une classe sans passer par une interface (que se passe t-il si l'utlisateur utilise directement le script en trafficant ses paquests avec TamperData ou autre?).
Néamoins une solution est peut-être envisageable grâce à une librairie du type jquery.
https://satoewarna.com/jqsajax/ .
Bonne chance et bonne continuation.