您的代码被拆分为两个完全独立的部分,即服务器端和客户端。
|
---------->
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>
调用没有产生任何结果,它只是将“ + foo +”写入文件。调用产生输出“42”,该输出现在位于该代码曾经的位置。file_put_contents
<?php echo 42; ?>
现在,生成的 HTML/JavaScript 代码将发送到客户端,并在客户端进行评估。调用有效,而变量不在任何地方使用。alert
foo
所有PHP代码都在客户端开始执行任何JavaScript之前在服务器上执行。响应中没有 JavaScript 可以与之交互的 PHP 代码。
要调用一些PHP代码,客户端必须向服务器发送新的HTTP请求。可以使用以下三种可能的方法之一发生这种情况:
- 一个链接,它会导致浏览器加载新页面。
- 表单提交,将数据提交到服务器并加载新页面。
- AJAX 请求,这是一种 Javascript 技术,用于向服务器发出常规 HTTP 请求(如 1. 和 2.will),但不离开当前页面。
这里有一个问题更详细地概述了这些方法
您还可以使用JavaScript使浏览器使用或提交表单打开新页面,从而模拟可能性1。和 2.window.location