我有以下代码:
<script type="text/javascript">
var foo = 'bar';
<?php
file_put_contents('foo.txt', ' + foo + ');
?>
var baz = <?php echo 42; ?>;
alert(baz);
</script>
为什么这不将“ bar”写入我的文本文件,而是发出“ 42”警报?
注意:此问题的早期修订版本明确涉及服务器上的PHP和客户端上的JavaScript。当一种语言在客户端上运行而另一种语言在服务器上运行时,问题和解决方案的本质对于
任何 一对语言都是相同的(即使它们是相同的语言)。当您看到有关特定语言的答案时,请考虑到这一点。
您的代码分为两个完全独立的部分, 服务器端 和 客户端 。
|
---------->
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
呼叫并没有导致任何东西,它只是写了“+富+”到文件中。该<?php echo 42; ?>
调用导致输出“
42”,该输出现在位于该代码以前所在的位置。
现在,此生成的HTML / JavaScript代码将发送到客户端,并在客户端进行评估。该alert
调用有效,而该foo
变量未在任何地方使用。
在客户端甚至开始执行任何JavaScript之前,所有PHP代码都在服务器上执行。 JavaScript可以与之交互的响应中没有剩下PHP代码。
要调用一些PHP代码,客户端将必须向服务器发送新的HTTP请求。使用三种可能的方法之一可以发生这种情况:
您还可以使用JavaScript来window.location
模拟或可能性1.和2. ,使浏览器使用或提交表单来打开新页面。
问题内容: 我有以下代码: 为什么这不将“ bar”写到我的文本文件中,但提示“ 42”? 注意:此问题的早期修订版本明确涉及服务器上的PHP和客户端上的JavaScript。当一种语言在客户端上运行而另一种语言在服务器上运行时,问题和解决方案的本质对于 任何 一对语言都是相同的(即使它们是相同的语言)。当您看到有关特定语言的答案时,请考虑到这一点。 问题答案: 您的代码分为两个完全独立的部分,
创建 HTTP 客户端 使用默认选项创建一个HttpClient实例,如下所示: HttpClient client = vertx.createHttpClient(); 如果您想要在创建时配置客户端的选项,如下所示: HttpClientOptions options = new HttpClientOptions().setKeepAlive(false); HttpClient clien
创建 TCP 客户端 最简单的方法来创建一个 TCP 客户端,使用默认选项如下所示: NetClient client = vertx.createNetClient(); 配置 TCP 客户端 如果你不想使用默认值,则创建TCP 客户端时,通过传入NetClientOptions实例可以配置: NetClientOptions options = new NetClientOptions().s
Vert.x 允许您轻松地编写非阻塞的 HTTP 客户端和服务器。
Vert.x 可以轻松地编写非阻塞的 TCP 客户端和服务器。
创建一个 HTTP 服务器 最简单的方法来创建一个 HTTP 服务器,所有选项使用默认的。如下所示: HttpServer server = vertx.createHttpServer(); 配置 HTTP 服务器 如果你不想使用默认值,创建服务器时可以通过传入一个HttpServerOptions实例配置: HttpServerOptions options = new HttpServerO