-6

たとえば、js.phpにこのコードがあります

<script type="text/javascript">
document.write(Math.random());
</script>

これにより、乱数が出力されます。たとえば、次のようになります。0.123123123123

今、私はこのコードを試したfetch.phpを持っています:

<?
 echo file_get_contents("js.php");
?>

これにより、次のような出力が得られます。

<script type="text/javascript">
document.write(Math.random());
</script>

しかし、出力を0.123123123123-- これは JavaScript によって生成された出力です。ソースコードではなく、そのコードの出力が必要です。PHPを使用してこれを行うにはどうすればよいですか?

注: 乱数は単なるサンプルです。他に取り組むべきことがあります。

4

4 に答える 4

2

JS は別のプログラミング言語であり、JS 対応のパーサーによって解釈される必要があります。PHP で HTML ドキュメントをフェッチして JS が実行されることを期待することはできません。PHP が表示するのはテキストだけです。

これに対する 2 つの一般的なアプローチは次のとおりです。

  1. HTML ドキュメントを HTTP 経由でブラウザに渡します。ブラウザで JS を実行します。HTTP 経由でデータを返します。(たとえば、XMLHttpRequest を介して、または非表示の入力を入力した後に JS を使用してフォームを送信します (これも JS を使用))。
  2. サーバー上で実行されている JS パーサーに JS を渡します。たとえば、PHP の v8jsを使用します。

これらのアプローチのいずれかでは、JS を変更する必要があります。現在、HTML ドキュメントにコンテンツを追加するように設計されています。ブラウザを使用している場合は、JS を追加して抽出する必要があります。v8 を使用している場合は、JS を書き直すか、documentオブジェクトをモックする必要があります。

また、この 2 つの中間にあるアプローチを取り、サーバー上のブラウザーをプログラムで制御することもできます (たとえばSeleniumを使用)。このようにして、ブラウザにドキュメントをフェッチするように指示し、PHP API を使用してドキュメントから DOM を読み取ることができます。

于 2012-10-22T13:21:11.660 に答える
0

これを実現するには、AJAX を使用する必要があります。jQuery で行う方が簡単です: http://api.jquery.com/jQuery.ajax/

ただし、通常の JavaScript を使用することもできます: http://linuxgazette.net/123/smith.html

于 2012-10-22T13:20:43.567 に答える
0

あなたができないajax呼び出しを使用することはできません。クライアント側とサーバー側のスクリプトを組み合わせようとしています。彼らは、ajax 呼び出しを使用しないと通信できません。サーバー側であるため、phpスクリプトが最初に実行されます。したがって、PHP が実行されるとき、JavaScript の乱数はまだ生成されていません。ページをロードし、JavaScript で乱数を生成してから、サーバーに対して ajax 呼び出しを行う必要があります。この番号は、PHP スクリプトで使用できます。

于 2012-10-22T13:22:18.260 に答える
-1

使用してみてください:

jQuery.getScript()

コールバックで関数を実行できsuccessます。

于 2012-10-22T13:24:55.883 に答える