コードは、サーバー側とクライアント側の 2つの完全に別の部分に分割されます。
|
---------->
HTTP request
|
+--------------+ | +--------------+
| | | | |
| browser | | | web server |
| (JavaScript) | | | (PHP etc.) |
| | | | |
+--------------+ | +--------------+
|
client side | server side
|
<----------
HTML, CSS, JavaScript
|
双方は、HTTP要求と応答を介して通信します。PHPはサーバーで実行され、HTMLを出力します。JavaScriptコードは、HTMLが解釈され、JavaScriptが実行されるクライアントへの応答として送信されます。PHPが応答の出力を完了すると、スクリプトは終了し、新しいHTTPリクエストが着信するまでサーバー上で何も起こりません。
サンプルコードは次のように実行されます:
<script type="text/javascript">
var foo = 'bar';
<?php
file_put_contents('foo.txt', ' + foo + ');
?>
var baz = <?php echo 42; ?>;
alert(baz);
</script>
ステップ1、PHPは<?php ?>
タグ間のすべてのコードを実行します。結果はこれです:
<script type="text/javascript">
var foo = 'bar';
var baz = 42;
alert(baz);
</script>
file_put_contents
呼び出しは何ももたらさなかった、それだけでファイルに「+ fooの+」を書きました。の<?php echo 42; ?>
コールは、そのコードがために使用場所に今ある出力「42」になりました。
この結果のHTML / JavaScriptコードはクライアントに送信され、そこで評価されます。alert
一方、コールは、働くfoo
変数はどこでも使用されていません。
すべてのPHPコードは、クライアントがJavaScriptの実行を開始する前にサーバーで実行されます。JavaScriptがやり取りできる応答にPHPコードが残っていません。
一部のPHPコードを呼び出すには、クライアントが新しいHTTPリクエストをサーバーに送信する必要があります。これは、次の3つの方法のいずれかを使用して発生する可能性があります。
- ブラウザーに新しいページをロードさせるリンク。
- サーバーにデータを送信し、新しいページをロードするフォーム送信。
- AJAXの JavaScriptの技術をある要求は、(1および2意志のような)が、現在のページを離れることなく、サーバーに通常のHTTP要求を行います。
これらの方法をより詳細に概説する質問があります
JavaScriptを使用して、ブラウザで新しいページを開いwindow.location
たり、フォームを送信したりして、可能性1および2をエミュレートすることもできます。
window.open
、iframeを使用して2番目のページを開いたり、iframeを使用してページをロードしたりすることもできます。