Rechercher : dans
Par :

[Ajax] Appel d'une méthode PHP via Ajax ?

Dernière réponse le 26 sep 2009 à 23:20:16 Sethpolma, le 25 jan 2007 à 15:04:09 
 Signaler ce message aux modérateurs

Bonjour tout le monde !

J'ai un petit problème. Je dispose d'une classe PHP contenant diverses méthodes. Pour l'exemple, on va dire qu'elle contient la méthode UpdateList. J'ai aussi un script Ajax.

Je voudrais que, lorsque je clique sur un bouton par exemple, le script Ajax se lance et aille exécuter ma méthode UpdateList. Ayant cherché sur le Net, je n'ai rien trouvé. Si quelqu'un avait la solution...

J'ai bien pensé exécuter un premier script qui parserait mon fichier PHP à la recherche de la bonne partie du code, qui le recopierait dans un second fichier, qui serait alors ensuite exécuté avant d'être effacé. Mais je trouve cette méthode "un peu" lourde. :-)

Si quelqu'un a une idée...

Merci beaucoup !

Configuration: Windows Vista
Opera 9.10

Meilleures réponses pour « [Ajax] Appel d'une méthode PHP via Ajax ? » dans :
Ajax - Javascript - Upload multiple VoirIntroduction Création de l'uploader Script côté serveur (upload.php) Téléchargement des Fichiers Multiples Génériques en Ajax Introduction AJAX Upload vous permet de facilement télécharger plusieurs fichiers sans rafraîchir la page et...
[PHP] Upload de fichiers VoirLe langage PHP permet de gérer des fichiers envoyés (uploadés) grâce à un formulaire HTML. Formulaire d'envoi de fichiers Configuration de PHP pour permettre l'upload Récupération du fichier avec PHP Formulaire d'envoi de fichiers La...
Java: Les méthodes VoirLa notion de fonction et de méthode On appelle fonction un sous-programme qui permet d'effectuer un ensemble d'instruction par simple appel de la fonction dans le corps du programme principal. Les fonctions permettent d'exécuter dans plusieurs...
PHP - Les fonctions VoirLa notion de fonction On appelle fonction un sous-programme qui permet d'effectuer un ensemble d'instructions par simple appel de la fonction dans le corps du programme principal. Les fonctions permettent d'exécuter dans plusieurs parties du...
PHP - Parser du XML VoirIntroduction à XML PHP permet l'analyse syntaxique (parsage ou parsing en anglais) d'un document XML. Le langage XML (eXtensible Markup Language, traduisez Langage à balises extensibles) est un métalangage, c'est-à-dire un langage permettant de...

1

kij_82, le 25 jan 2007 à 15:33:38
  • +2

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. ~ iclic @ gauch,iclic, iclic @ droate, iclic, iclic
et ya pas de bôg môsieu ! ~

Répondre à kij_82

2

Sethpolma, le 25 jan 2007 à 16:16:27
  • +1

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.

Répondre à Sethpolma

3

monsieur propre, le 31 jan 2007 à 10:43:58

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");
}

Répondre à monsieur propre

4

 Faust, le 26 sep 2009 à 23:20:16

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.
http://satoewarna.com/jqsajax/ .

Bonne chance et bonne continuation.

Répondre à Faust