Come posso chiamare le funzioni PHP da JavaScript?

Sto cercando di chiamare una funzione PHP da un file PHP esterno in uno script JavaScript. Il mio codice è diverso e grande, quindi sto scrivendo un codice di esempio qui.

Questo è il mio codice PHP:

 

Questo è il mio codice JavaScript:

  var phpadd= add(1,2); //call the php add function var phpmult= mult(1,2); //call the php mult function var phpdivide= divide(1,2); //call the php divide function  

Quindi questo è quello che voglio fare.

Il mio file PHP originale non include queste funzioni matematiche, ma l’idea è la stessa.

Se alcuni non hanno una soluzione adeguata, allora potresti suggerire un’alternativa, ma dovrebbe chiamare valori da PHP esterno.

Sì, puoi eseguire una richiesta Ajax sul server con i tuoi dati nei parametri di richiesta, come questa (molto semplice):

Nota che il seguente codice usa jQuery

 jQuery.ajax({ type: "POST", url: 'your_functions_address.php', dataType: 'json', data: {functionname: 'add', arguments: [1, 2]}, success: function (obj, textstatus) { if( !('error' in obj) ) { yourVariable = obj.result; } else { console.log(obj.error); } } }); 

e your_functions_address.php come questo:

   

Prova questo

  

usa document.write per esempio,

  

Devi creare un’API: le tue funzioni js eseguono richieste AJAX sul tuo servizio web

  var mult = function(arg1, arg2) $.ajax({ url: "webservice.php?action=mult&arg1="+arg1+"&arg2="+arg2 }).done(function(data) { console.log(data); }); } 

sul lato php, dovrai controllare il parametro action per eseguire la funzione propre (fondamentalmente un’istruzione switch sulla variabile $ _GET [“action”])

index.php

  ...     

servicios.php

  

correo.php

  

Prova a guardare CASSIS . L’idea è di combinare PHP con JS in modo che entrambi possano lavorare lato client e server.

Ho scritto alcuni script per me il suo funzionamento .. Spero che possa esserti utile

  

Se in realtà vuoi inviare dati ad uno script php, ad esempio puoi farlo:

Il php:

  

Js (usando jquery):

 $.post("/path/to/above.php", {a: something, b: something}, function(data){ $('#somediv').html(data); }); 

Questo funziona perfettamente per me:

Per chiamare una funzione PHP (anche con parametri) è ansible, come detto da molte persone, inviare un parametro aprendo il file PHP e da lì controllare il valore del parametro per chiamare la funzione. Ma puoi anche fare in modo che molte persone dicano che è imansible: chiama direttamente la funzione PHP corretta, senza aggiungere codice al file PHP.

Ho trovato un modo:

Questo per JavaScript:

 function callPHP(expression, objs, afterHandler) { expression = expression.trim(); var si = expression.indexOf("("); if (si == -1) expression += "()"; else if (Object.keys(objs).length > 0) { var sfrom = expression.substring(si + 1); var se = sfrom.indexOf(")"); var result = sfrom.substring(0, se).trim(); if (result.length > 0) { var params = result.split(","); var theend = expression.substring(expression.length - sfrom.length + se); expression = expression.substring(0, si + 1); for (var i = 0; i < params.length; i++) { var param = params[i].trim(); if (param in objs) { var value = objs[param]; if (typeof value == "string") value = "'" + value + "'"; if (typeof value != "undefined") expression += value + ","; } } expression = expression.substring(0, expression.length - 1) + theend; } } var doc = document.location; var phpFile = "URL of your PHP file"; var php = "$docl = str_replace('/', '\\\\', '" + doc + "'); $absUrl = str_replace($docl, $_SERVER['DOCUMENT_ROOT'], str_replace('/', '\\\\', '" + phpFile + "'));" + "$fileName = basename($absUrl);$folder = substr($absUrl, 0, strlen($absUrl) - strlen($fileName));" + "set_include_path($folder);include $fileName;" + expression + ";"; var url = doc + "/phpCompiler.php" + "?code=" + encodeURIComponent(php); $.ajax({ type: 'GET', url: url, complete: function(resp){ var response = resp.responseText; afterHandler(response); } }); } 

Questo per un file PHP che non è il tuo file PHP, ma un altro, il cui percorso è scritto nella variabile url della funzione JS callPHP , ed è necessario per valutare il codice PHP. Questo file si chiama 'phpCompiler.php' ed è nella directory principale del tuo sito web:

  

Quindi, il tuo codice PHP rimane uguale tranne i valori di ritorno, che verranno riecheggiati:

  

Ti suggerisco di ricordare che jQuery è richiesto:
Scaricalo da Google CDN:

  

o da Microsoft CDN: "Preferisco Google! :)"

  

È meglio scaricare il file da uno dei due CDN e inserirlo come file locale, in modo che il caricamento all'avvio del tuo sito sia più veloce!

La scelta è per te!

Ora hai finito! Ti dico solo come usare la funzione callPHP . Questo è il codice JavaScript per chiamare PHP:

 //Names of parameters are custom, they haven't to be equals of these of the PHP file. //These fake names are required to assign value to the parameters in PHP //using an hash table. callPHP("add(num1, num2)", { 'num1' : 1, 'num2' : 2 }, function(output) { alert(output); //This to display the output of the PHP file. });