为什么通过 javascript 执行 php 有效?
Why does executing php via javascript work?
谁能解释一下这种情况下请求和响应周期的分步操作?是的,它确实有效(如果你有一个有效的 php 后端)。
for(var i=0; i<10; i++){
var test = "<?php echo 'test'; ?>";
console.log(test);
}
请不要模仿 AJAX 的维基百科定义或 php 是服务器端而 javascript 是客户端,我知道这些事情。
我的问题是,在这种情况下,我无法思考哪个先出现。我的想法是先执行 js,然后向服务器发送请求,但这基本上不是 AJAX 吗?如果 js 没有首先执行,服务器怎么可能知道执行 php(即 echo "test")而不是只提供 php 标签的纯文本版本?
您从服务器请求一个 .php 文件,然后服务器对其进行解析并呈现以提供给客户端。在渲染过程中,echo 正在输出一个字符串,因此 var test = "<?php echo 'test'; ?>";
在输出中变为 var test ="test"
。浏览器解释输出 (html) 并在该点执行任何 javascript。您给出的场景中没有 Ajax,这就是您可能感到困惑的原因。
第 1 步 PHP 准备要由浏览器解析的页面。发送到您浏览器的实际源代码是:
var test = "test";
alert(test);
您应该能够在生成的页面上查看源代码并看到这个。您不是在进行服务器端调用,您只是通过 PHP
将文本加载到浏览器页面
尝试将其视为图层。我相信您知道服务器上的 php 运行 和客户端上的 javascript。这就是我认为的流程
- 正在呈现的页面必须来自某个地方,在这种情况下它是服务器,幸运的是这也是执行 php 的地方所以所有 php 代码之前都有 运行被发送到服务器。即:即使是回显代码
- echo 测试已经 运行 在服务器中并且字符串 'test' 已经在一个相当幸运的地方生成 - 在 javascript 变量声明中。
- 所以我们可以看到,服务器只是发送 "var test = 'test'" 并没有做任何事情 javascript 所以 'var' 对服务器来说并不重要
- 当它从服务器到达浏览器时,这实际上是有意义的并被执行!
因此,对于服务器,'var test = ' 只是字符串 'var test = "test";',而对于浏览器中的 Javascript,这意味着变量 test 包含一个字符串 'test'
编辑:如果用于从服务器发送的页面的for循环中,当页面到达浏览器时,无论回显php脚本出现在哪里,已经有回显字符串
我会尽量简单地说。您知道 PHP 是服务器端,JS 是客户端,您在这方面是正确的。
PHP 作为一种语言 运行s 无论它做什么来生成 HTML 要推送到客户端(浏览器)的内容。所以当你 运行 你的 javascript:
for(var i=0; i<10; i++){
var test = "<?php echo 'test'; ?>";
console.log(test);
}
PHP 在 javascript 知道它完成任何事情之前被评估。基本上让你的小脚本看起来像这样:
for(var i=0; i<10; i++){
var test = "test";
console.log(test);
}
您上面的脚本中没有 ajax。
谁能解释一下这种情况下请求和响应周期的分步操作?是的,它确实有效(如果你有一个有效的 php 后端)。
for(var i=0; i<10; i++){
var test = "<?php echo 'test'; ?>";
console.log(test);
}
请不要模仿 AJAX 的维基百科定义或 php 是服务器端而 javascript 是客户端,我知道这些事情。
我的问题是,在这种情况下,我无法思考哪个先出现。我的想法是先执行 js,然后向服务器发送请求,但这基本上不是 AJAX 吗?如果 js 没有首先执行,服务器怎么可能知道执行 php(即 echo "test")而不是只提供 php 标签的纯文本版本?
您从服务器请求一个 .php 文件,然后服务器对其进行解析并呈现以提供给客户端。在渲染过程中,echo 正在输出一个字符串,因此 var test = "<?php echo 'test'; ?>";
在输出中变为 var test ="test"
。浏览器解释输出 (html) 并在该点执行任何 javascript。您给出的场景中没有 Ajax,这就是您可能感到困惑的原因。
第 1 步 PHP 准备要由浏览器解析的页面。发送到您浏览器的实际源代码是:
var test = "test";
alert(test);
您应该能够在生成的页面上查看源代码并看到这个。您不是在进行服务器端调用,您只是通过 PHP
将文本加载到浏览器页面尝试将其视为图层。我相信您知道服务器上的 php 运行 和客户端上的 javascript。这就是我认为的流程
- 正在呈现的页面必须来自某个地方,在这种情况下它是服务器,幸运的是这也是执行 php 的地方所以所有 php 代码之前都有 运行被发送到服务器。即:即使是回显代码
- echo 测试已经 运行 在服务器中并且字符串 'test' 已经在一个相当幸运的地方生成 - 在 javascript 变量声明中。
- 所以我们可以看到,服务器只是发送 "var test = 'test'" 并没有做任何事情 javascript 所以 'var' 对服务器来说并不重要
- 当它从服务器到达浏览器时,这实际上是有意义的并被执行!
因此,对于服务器,'var test = ' 只是字符串 'var test = "test";',而对于浏览器中的 Javascript,这意味着变量 test 包含一个字符串 'test'
编辑:如果用于从服务器发送的页面的for循环中,当页面到达浏览器时,无论回显php脚本出现在哪里,已经有回显字符串
我会尽量简单地说。您知道 PHP 是服务器端,JS 是客户端,您在这方面是正确的。
PHP 作为一种语言 运行s 无论它做什么来生成 HTML 要推送到客户端(浏览器)的内容。所以当你 运行 你的 javascript:
for(var i=0; i<10; i++){
var test = "<?php echo 'test'; ?>";
console.log(test);
}
PHP 在 javascript 知道它完成任何事情之前被评估。基本上让你的小脚本看起来像这样:
for(var i=0; i<10; i++){
var test = "test";
console.log(test);
}
您上面的脚本中没有 ajax。