1

;-) レンガの壁にぶち当たりました。今日、人生で初めてアヤックスに会いました。そして、私の質問が非常にばかげているように見えることも理解しています。しかし、私はあなたの助けが必要です。

私はphpファイル(例:index.php)を持っています。それにはインクルード(function.php)があります。ファイルfunction.phpには関数があります (たとえばfunction Jokes(){....})。

AJAX を使用して、この関数をページにロードしたいと考えています。しかし、私はこれを行う方法がわかりません... :-(

簡単な解決策をいくつか見つけました (私は Jquery ロード関数を使用します) が、別のファイルを使用する必要があるため、それは私が望むものではありません。

$('#jokes').load('jokes.php');

しかし、私は次のようなものが必要です:

$('#jokes').load('function.php','jokes()');

助けやアイデアはありますか?それは高く評価されます。

PS: 下手な英語でごめんなさい...))

4

6 に答える 6

2

できることは、関数を分割する ajaxfunctions.php などの 1 つの AJAX ファイルを作成することです。

$('#jokes').load("ajax.php", { 'function': 'jokes' } );

PHP ファイル ajax.php で、これを行うことができます。

<?php
include 'function.php';
if (isset ($_POST['function']) && $_POST['function'] == 'jokes')
{
    echo jokes ();
}
?>

これは役に立ちますか?

于 2013-02-28T14:04:26.453 に答える
0

ブラウザー (および Ajax) は、サーバーに対して HTTP 要求のみを行うことができます。

特定の機能を実行することはできません。

特定の URL を認識するサーバー側のコード (たとえば、その関数のみを呼び出すスクリプト、またはクエリ文字列に基づいて実行する関数を決定するスクリプト) を記述し、要求に応じて特定の関数を実行する必要があります。それに。

于 2013-02-28T14:02:04.593 に答える
0

いいえ、このままでは無理です。URL にリクエストを送信する必要があります。PHP ファイルから特定の関数を呼び出すことはできません。

必要な関数の URL ラッパーを作成します。

于 2013-02-28T14:02:23.323 に答える
0

そうしないでください。Ajax はデータの送信または取得に使用されますが、何をしようとしているのかは、PHP ファイルで定義された Javascript 関数をロードすることです (そうではありませんか?)。代わりに、JavaScript 関数を JS ファイルで定義し、スクリプトを介してロードします (または、動的にロードする必要がある場合は、require.js などの AMD ローダーを使用できます)。

JS で PHP 関数をロードしたい場合、それは不可能です。ただし、代わりにその関数を呼び出してその結果をフェッチすることもできます。

于 2013-02-28T14:02:54.533 に答える
0

このようには機能しません。

$('#jokes').load('jokes.php');

Joes.php に対して http リクエストを行います。特定の関数を実行する場合は、次のようにパラメーターを使用できます。

$('#jokes').load('jokes.php?func=jokes');

PHP スクリプトから「func」を取得し、適切な関数を実行します。

...
function jokes() {
   return 'some output';
}

...
$func='';
if (!empty($_REQUEST['func'])) {
  $func=$_REQUEST['func'];
}

if ($func=='jokes') {
  echo jokes();  
}
于 2013-02-28T14:03:50.217 に答える
0

これには AJAX は必要ありません。Jokes() 関数を Jokes.js という名前の JavaScript ファイルに入れ、それを index.php に含めてから、通常通り index.php の JavaScript ブロックで呼び出します。

于 2013-02-28T14:05:53.657 に答える