tę pracę idealnie dla mnie:
Aby wywołać funkcję PHP (z parametrami też) można, jak wiele osób mówi, wysyłać parametr otwierania pliku PHP i stamtąd sprawdź wartość parametru, aby wywołać funkcję. Ale możesz też zrobić, że wiele osób twierdzi, że to niemożliwe: bezpośrednio wywołaj odpowiednią funkcję PHP, bez dodawania kodu do pliku PHP.
znalazłem sposób:
To dla 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);
}
});
}
To dla pliku PHP, który nie jest plik PHP, ale inna, która ścieżka jest napisana wurl
Zmienna funkcji JScallPHP
, wymagana do oceny kodu PHP. Plik ten jest nazywany „phpCompiler.php” i to w katalogu głównym swojej stronie:
<?php
$code = urldecode($_REQUEST['code']);
$lines = explode(";", $code);
foreach($lines as $line)
eval(trim($line, " ") . ";");
?>
Więc kod PHP pozostanie równa wyjątkiem wartości zwracanych, które będą echem:
<?php
function add($a,$b){
$c=$a+$b;
echo $c;
}
function mult($a,$b){
$c=$a*$b;
echo $c;
}
function divide($a,$b){
$c=$a/$b;
echo $c;
}
?>
proponuję, aby pamiętać, że jQuery jest wymagany:
pobrać z Google CDN:
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
lub Microsoft CDN: „Wolę Google! :)”
<script src="https://ajax.aspnetcdn.com/ajax/jQuery/jquery-3.1.1.min.js"></script>
Lepiej jest, aby pobrać plik z jednego z dwóch CDN i umieścić go jako lokalnego pliku, więc ładowanie uruchomienie witryny
szybciej! Wybór należy do Ciebie!
!.
teraz skończył właśnie powiedzieć jak używać
callPHP
funkcja ta jest obsługa JavaScript, żeby zadzwonić 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.
});
php jest po stronie serwera js po stronie klienta. Będziesz musiał użyć ajaxu lub odświeżenia strony przy pomocy gets/posts lub spróbować stworzyć równoważną funkcję js. – Class