これは私にとって完璧に機能します:
PHP関数を(パラメータも含めて)呼び出すには、多くの人が言ったように、PHPファイルを開くパラメータを送信し、そこからパラメータの値をチェックして関数を呼び出すことができます。しかし、多くの人が不可能だと言っていることも実行できます。PHP ファイルにコードを追加せずに、適切な PHP 関数を直接呼び出します。
私は方法を発見しました:
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);
}
});
}
これは、PHP ファイルではなく別の PHP ファイルで、パスが url
JS function の変数に記述されて callPHP
おり、PHP コードを評価するために必要です。このファイルは「phpCompiler.php」と呼ばれ、Web サイトのルート ディレクトリにあります。
<?php
$code = urldecode($_REQUEST['code']);
$lines = explode(";", $code);
foreach($lines as $line)
eval(trim($line, " ") . ";");
?>
したがって、PHP コードは、エコーされる戻り値を除いて等しいままです。
<?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;
}
?>
jQuery が必要であることを覚えておくことをお勧めします:
Google CDN からダウンロードします:
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
または Microsoft CDN から: 「私は Google の方が好きです! :)」
<script src="https://ajax.aspnetcdn.com/ajax/jQuery/jquery-3.1.1.min.js"></script>
2 つの CDN のいずれかからファイルをダウンロードしてローカル ファイルとして配置することをお勧めします。これにより、Web サイトの起動時の読み込みが速くなります。
選択はあなた次第です!
これで完了です。 関数の使用方法を説明するだけです。callPHP
これは、PHP を呼び出す JavaScript です。
//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.
});