-5

PHP はサーバー側で JavaScript はクライアント側であるため、JavaScript 変数を PHP に渡したり、その逆を行ったりすることはできないと考えていました。

それから、それが可能だというウェブサイトを見て、それを試してみました. どうやらそれは可能であることが判明しました...以下のコードサンプルを参照してください。

変数を渡すことができない場合、なぜ機能するのですか? 私は何を間違えましたか?

コードサンプル

<?php
$var1 = 300;
echo $var1.'echo_via_php...<br />'; //so far so good

?>
<script type="text/javascript">

document.write('PHP to JS -> <br />') ;
var x = '<?php echo $var1; ?>';
document.write('doc_write_java_X: <br />') ;
document.write(x) ;
document.write(' ( if = 300 its okay...i guess )<br />') ;

var php_y = '50'      ;

</script> 

</div>
<div>

<?php
echo '<br /><br />now js to PHP...';
/////////////////also works java to php...
$var2 = "<script>document.write(php_y)</script>";  
echo 'VAR2 is equal php_y: '.$var2;

?>

私のサーバーでライブテストを確認できます。

4

1 に答える 1

0

tl;dr : PHP は Javascript を生成できますが、この 2 つは相互的または同期的に話すことができません。

これは、php と javascript を「含む」リクエストが実行されたときに何が起こるかのチェーンを簡単に示したものです。

  1. リクエストがサーバーに送信されます (つまり、ユーザーがブラウザでスクリプトの URL を入力します)。
  2. サーバーは php スクリプトを完全に処理し、ブラウザー出力 (html とおそらく javascript) を吐き出します。
  3. ユーザー ブラウザー (クライアント) は html を取得し、それをユーザー画面にレンダリングし、ページの JavaScript があればそれを実行します。

各ステップは、前のステップが完了した後にのみ発生します。つまり、javascript が実行されているとき、PHP は既になくなっています。PHP で宣言された関数を JavaScript で呼び出す方法はありません。

ただし、ここで重要なことは、ステップ 3 がステップ 2 に依存していることです。つまり、最終的な html が PHP の出力決定に依存するように、javascript も同様です。言い換えれば、PHP が JavaScript を動的に生成することが可能であり、それがまさに質問のコードで起こっていることです。

しかし、より実用的な観点から見てみましょう。リクエストを見てみましょう。

ステップ1

リクエストがサーバーに送信されます。次のコードが実行のために取得されます。

<?php
$var1 = 300;
echo $var1.'echo_via_php...<br />'; //so far so good

?>
<script type="text/javascript">

document.write('PHP to JS -> <br />') ;
var x = '<?php echo $var1; ?>';
document.write('doc_write_java_X: <br />') ;
document.write(x) ;
document.write(' ( if = 300 its okay...i guess )<br />') ;

var php_y = '50'      ;

</script> 

</div>
<div>

<?php
echo '<br /><br />now js to PHP...';
/////////////////also works java to php...
$var2 = "<script>document.write(php_y)</script>";  
echo 'VAR2 is equal php_y: '.$var2;

?>

ステップ2

PHP が処理され、次の出力が生成されてクライアントに送信されます。

300echo_via_php...<br />
<script type="text/javascript">

document.write('PHP to JS -> <br />') ;
var x = '300';
document.write('doc_write_java_X: <br />') ;
document.write(x) ;
document.write(' ( if = 300 its okay...i guess )<br />') ;

var php_y = '50'      ;

</script> 

</div>
<div>

<br /><br />now js to PHP...
<script>document.write(php_y)</script>
VAR2 is equal php_y: <script>document.write(php_y)</script>

ステップ 3

ユーザーのブラウザーがサーバーの出力を収集し、javascript を実行すると、次の結果が得られます。

300echo_via_php...<br />
<script type="text/javascript">

document.write('PHP to JS -> <br />') ;
var x = '300';
document.write('doc_write_java_X: <br />') ;
document.write(x) ;
document.write(' ( if = 300 its okay...i guess )<br />') ;

var php_y = '50'      ;

</script> 
PHP to JS -> <br />
doc_write_java_X: <br />
300
 ( if = 300 its okay...i guess )<br />

</div>
<div>

<br /><br />now js to PHP...
<script>document.write(php_y)</script>
50
VAR2 is equal php_y: <script>document.write(php_y)</script>
50

元の質問でコードを使用したため、この例は確かに最も簡単な方法ではありませんが、うまくいけば要点を示しています。PHP は、後でクライアントによって読み取られる出力を生成するだけです。ある言語が別の言語のコードを生成するのは混乱を招く可能性がありますが、javascript を html と同様にテキストと考えると理にかなっています。

于 2013-01-13T17:51:29.813 に答える