私はいくつかの基本的なAjaxのことをやっています(jqueryではなく、基本を学んでいます).htmlがデータを送信して特定のphpページを実行するjavascript関数を呼び出す一般的な構造を設定しています。
しかし、すでに functions.php で定義されている php 関数を実行する必要がある場合はどうでしょうか。それはまったく可能ですか?タスクごとに新しい php ファイルを作成するのにうんざりしています ;)
私はいくつかの基本的なAjaxのことをやっています(jqueryではなく、基本を学んでいます).htmlがデータを送信して特定のphpページを実行するjavascript関数を呼び出す一般的な構造を設定しています。
しかし、すでに functions.php で定義されている php 関数を実行する必要がある場合はどうでしょうか。それはまったく可能ですか?タスクごとに新しい php ファイルを作成するのにうんざりしています ;)
次のようなものを処理するために、php でクラスを定義できます。
functions.php:
class MyFunctions {
function foo() {
// code here
// if you need to pass in some parameters, you can do it via jQuery and fetch the data like so (for the jQuery, see below)
if($_GET['name'] == "john") { } // do stuff
}
function bar() {
// code here
}
static function handleFn($fName) {
if(method_exists(__CLASS__, $fname)) {
echo $this->{$fname}(); die; // since AJAX, just echo the output and stop executing
}
}
}
if(!empty($_GET['f'])) {
MyFunctions::handleFn($_GET['f']);
}
次に、次のように ajax 呼び出しを行います (jQuery を想定):
$.get("/functions.php?f=func_name_to_call", {name: "John", hobby: "Programming"}, function(data) {
});
PHP スクリプトでは、GET 変数をチェックするように設計された if ステートメントで各関数を囲みます。次に、JS で、その関数を呼び出すために必要な変数に固有の GET 変数を送信します。
ajaxもhttpリクエストであり、php関数を直接呼び出すことはできません