2010-11-13 18 views
5

Ich möchte wissen, ist es möglich, eine PHP-Funktion innerhalb von Javascript aufrufen, nur und nur wenn eine Bedingung wahr ist. Zum BeispielAufruf von PHP-Funktion in Javascript

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

Gibt es irgendwelche Mittel, dies zu tun .. Wenn ja, lass es mich wissen. Danke

+2

mögliche Duplikate von [Javascript und PHP-Funktionen] (http://StackOverflow.com/Questions/221396/JavaScript-and-PHP-Funktionen) –

Antwort

2

Die PHP-Funktion kann nicht wie oben dargestellt aufgerufen werden. Sie können jedoch ein PHP-Skript mit AJAX aufrufen, der Code ist wie folgt. Sie können auch ein einfaches Beispiel finden here. Lassen Sie mich wissen, wenn Sie weitere Informationen benötigen

mit 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

Ich muss wirklich die jQuery-Bibliothek für Ajax empfehlen. Es macht die Dinge einfach lächerlich einfacher und sorgenfrei. –

+0

Absolut, aber jeder Neuling muss Grund zu starten, daher meine Verwendung von Barebones Javascript – Philar

+0

Vielen Dank für die Hilfe. Nur noch eine Sache kann mir ein einfaches jQuery.ajax Beispiel zeigen. Ich möchte seine grundlegende Implementierung wissen. –

2

Nein, das ist nicht möglich. PHP-Code läuft vor (serverseitig) javascript (Client-Seite)

4

PHP ist Server-Seite und Javascript ist Client so nicht wirklich (ja, ich weiß, es gibt einige Server-Seite JS). Sie können Ajax verwenden und eine PHP-Seite aufrufen, um einige Ergebnisse zu erhalten.

+1

Hier ist ein Artikel über Ajax und läuft mit jQuery http: // articles.sitepoint.com/article/ajax-jquery – Treffynnon

+0

Wow, ich sagte genau das gleiche einige Minuten nach dir :) –

1

Die anderen Antworten, die es Recht haben.

Es gibt jedoch eine Bibliothek, XAJAX, die hilft, den Aufruf einer PHP-Funktion aus JavaScript zu simulieren, mit AJAX und einer speziell entwickelten PHP-Bibliothek.

Es ist ein wenig kompliziert, und es wäre viel einfacher zu lernen, $ .get und $ .post in jQuery zu verwenden, da sie besser gestaltet und einfacher sind, und wenn Sie erst einmal wissen, wie sie arbeiten, haben Sie gewonnen Ich möchte PHP nicht direkt aus JavaScript aufrufen.

0

PHP wird immer vor dem Laden der Seite ausgeführt. JavaScript wird immer ausgeführt, nachdem die Seite geladen wurde. Sie laufen nie im Tandem.

Die nächste Lösung ist die Verwendung von AJAX oder einer Browserumleitung, um eine andere .php-Datei vom Server aufzurufen.