您的代码分为两个完全独立的部分,即服务器端和客户端。
|
---------->
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>
第一步,PHP执行在<?php ?>
标签之间的所有代码。结果如下:
Step 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 之前在服务器上执行。响应中没有剩余的 PHP 代码可供 JavaScript 交互。
要调用一些 PHP 代码,客户端必须向服务器发送新的 HTTP 请求。这可以使用以下三种可能的方法之一来完成:
- 链接,导致浏览器加载一个新页面。
- 表单提交,将数据提交到服务器并加载一个新页面。
- AJAX 请求,这是一种 Javascript 技术,用于向服务器发出常规 HTTP 请求(与 1 和 2 相同),但不会离开当前页面。
这里有一个问题详细概述了这些方法
您还可以使用 JavaScript 使用 window.location
或提交表单来让浏览器打开一个新页面,模拟第 1 和 2 种可能性。
window.open
打开第二个页面,或者使用iframe加载页面。 - jcubic<form>
数据创建一个HTTP请求并发送到服务器。您可以使用Javascript操纵表单,使其包含不同的数据。是的,如果在提交时它是表单的一部分,那么该数据将成为生成的HTTP请求的一部分;无论它是否在原始HTML中或是通过Javascript添加的。 - deceze它只是将 " + foo + " 写入了一个文件
,那么这个文件现在应该存储在服务器的文件系统中某个地方吧?因为在你的回答中没有明确说明,所以有点不太清楚。 - Greenonlinewindow
对象(即当前的HTML页面),但出于安全原因,你不能直接访问本地文件系统。而在服务器端则相反。 - Wernfried Domscheit