您的代码分为两个完全独立的部分,即服务器端和客户端 .
|
---------->
HTTP request
|
+--------------+ | +--------------+
| | | | |
| browser | | | web server |
| (JavaScript) | | | (PHP etc.) |
| | | | |
+--------------+ | +--------------+
|
client side | server side
|
HTML, CSS, JavaScript
|
双方通过HTTP请求和响应进行通信 . PHP在服务器上执行并输出一些HTML和JavaScript代码,这些代码作为响应发送到解释HTML并执行JavaScript的客户端 . 一旦PHP完成输出响应,脚本就会结束,在新的HTTP请求进入之前,服务器上什么都不会发生 .
示例代码执行如下:
var foo = 'bar';
file_put_contents('foo.txt', ' + foo + ');
?>
var baz = <?php echo 42; ?>;
alert(baz);
第1步,PHP执行 <?php ?> 标签之间的所有代码 . 结果如下:
var foo = 'bar';
var baz = 42;
alert(baz);
file_put_contents 调用没有产生任何结果,只是将" + foo + "写入文件中 . <?php echo 42; ?> 调用产生了输出"42",它现在位于该代码的位置 .
生成的HTML / JavaScript代码现在发送到客户端,在那里进行评估 . alert 调用有效,而 foo 变量不在任何地方使用 .
All PHP code is executed on the server before the client even starts executing any of the JavaScript. There's no PHP code left in the response that JavaScript could interact with.
要调用某些PHP代码,客户端必须向服务器发送新的HTTP请求 . 这可以使用以下三种方法之一进行:
一个链接,导致浏览器加载新页面 .
表单提交,将数据提交到服务器并加载新页面 .
一个AJAX请求,这是一种向服务器发出常规HTTP请求的Javascript技术(如1.和2.将),但不离开当前页面 .
您还可以使用JavaScript使浏览器使用 window.location 打开新页面或提交表单,模拟可能性1.和2 .