2010-11-13 8 views
5

Je veux savoir s'il est possible d'appeler une fonction php dans javascript, seulement et seulement lorsqu'une condition est vraie. Par exempleAppel de la fonction PHP au sein de Javascript

<script type="text/javascript"> 
if (foo==bar) 
{ 
phpFunction(); call the php function 
} 
</script> 

Y at-il un moyen de le faire .. Si oui, faites le moi savoir. Merci

+2

duplication possible de [fonctions Javascript et PHP] (http://stackoverflow.com/questions/221396/javascript-and-php-functions) –

Répondre

2

La fonction PHP ne peut pas être appelée de la manière que vous avez illustrée ci-dessus. Cependant, vous pouvez appeler un script PHP en utilisant AJAX, le code est comme indiqué ci-dessous. Vous pouvez également trouver un exemple simple here. Faites-moi savoir si vous avez besoin d'éclaircissements

En utilisant Jquery

<script type="text/javascript" src="./jquery-1.4.2.js"></script> 
<script type="text/javascript"> 
function compute() { 
    var params="session=123"; 
    $.post('myphpscript.php',params,function(data){ 
      alert(data);//for testing if data is being fetched 
      var myObject = eval('(' + data + ')'); 
      document.getElementById("result").value=myObject(addend_1,addend_2); 
     }); 
} 
</script> 

Barebones Javascript Alternative

<script type="text/javascript"> 

    function compute() { 
     var params="session=123" 
     var xmlHttp; 
     var addend_1=document.getElementById("par_1").value; 
     var addend_2=document.getElementById("par_2").value; 

     try 
     { 
      xmlHttp = new XMLHttpRequest(); 
     } 
     catch (e) 
     { 
      try 
      { 
       xmlHttp = new ActiveXObject("Msxml2.XMLHTTP"); 
      } 
      catch (e) 
      { 
       try 
       { 
        xmlHttp = new ActiveXObject("Microsoft.XMLHTTP"); 
       } 
       catch (e) 
       { 
        alert("No Ajax for YOU!"); 
        return false; 
       } 
      } 
     } 
     xmlHttp.onreadystatechange = function() 
     { 
      if (xmlHttp.readyState == 4) { 
       ret_value=xmlHttp.responseText; 
       var myObject = eval('(' + ret_value + ')'); 
       document.getElementById("result").value=myObject(addend_1,addend_2); 
      } 
     }  
     xmlHttp.open("POST", "http://yoururl/getjs.php", true); 
     xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); 
     xmlHttp.setRequestHeader("Content-length", params.length); 
     xmlHttp.setRequestHeader("Connection", "close"); 
     xmlHttp.send(params); 
    } 
    </script> 
+0

Je dois vraiment recommander la bibliothèque jQuery pour Ajax. Cela rend les choses ridiculement plus simples et sans souci. –

+0

Absolument, cependant chaque débutant a besoin de démarrer, d'où mon utilisation de barebones javascript – Philar

+0

Merci pour l'aide. Juste une chose de plus peut me montrer un exemple simple jQuery.ajax. Je veux connaître sa mise en œuvre de base. –

2

Non ce n'est pas possible. code PHP fonctionne avant (côté serveur) javascript (côté client)

4

PHP est côté serveur et Javascript est client donc pas vraiment (oui je sais qu'il ya un certain côté serveur JS). Ce que vous pouvez faire est d'utiliser Ajax et faire un appel à une page PHP pour obtenir des résultats.

+1

Voici un article sur comment faire fonctionner Ajax en utilisant jQuery http: // articles.sitepoint.com/article/ajax-jquery – Treffynnon

+0

Wow, j'ai dit exactement la même chose quelques minutes après vous :) –

1

Les autres réponses ont raison.

Cependant, il existe une bibliothèque, XAJAX, qui aide à simuler l'appel d'une fonction PHP depuis JavaScript, en utilisant AJAX et une bibliothèque PHP particulièrement conçue.

C'est un peu compliqué, et il serait beaucoup plus facile d'apprendre à utiliser $ .get et $ .post dans jQuery, car ils sont mieux conçus et plus simples, et une fois que vous voyez comment ils fonctionnent, vous avez gagné Ne sentez pas le besoin d'appeler PHP depuis JavaScript directement.

0

PHP s'exécute toujours avant le chargement de la page. JavaScript s'exécute toujours après le chargement de la page. Ils ne courent jamais en tandem.

La solution la plus proche consiste à utiliser AJAX ou une redirection de navigateur pour appeler un autre fichier .php à partir du serveur.

Questions connexes