为什么通过javascript执行php工作?

时间:2015-03-10 23:09:35

标签: javascript php client-server

有人可以在这种情况下逐步解释请求和响应周期吗?是的,它确实有效(如果你有一个工作的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标签的纯文本版本?

4 个答案:

答案 0 :(得分:1)

您从服务器请求一个.php文件,然后该文件将解析,然后呈现给客户端提供服务。在渲染过程中,echo输出一个字符串,使var test = "<?php echo 'test'; ?>";在输出中变为var test ="test"。浏览器解释输出(html)并在该点执行任何javascript。您提供的方案中没有涉及Ajax,这就是您可能会感到困惑的原因。

答案 1 :(得分:1)

步骤1)PHP准备要由浏览器解析的页面。发送到您浏览器的实际源代码是:

var test = "test";
alert(test);

您应该能够在结果页面上查看源代码并查看此内容。您没有进行服务器端呼叫,只是通过PHP将文本加载到浏览器页面

答案 2 :(得分:1)

尝试将其视为图层。因为我确定你知道php在服务器和客户端的javascript上运行。这就是我认为它的流动方式

  • 正在呈现的页面必须来自某个地方,在这种情况下它是服务器,幸运的是这也是php执行的地方,因此所有php代码在发送到服务器之前都已运行。即使是回声代码
  • echo test已经在服务器上运行并且字符串&#39; test&#39;已在相当幸运的地方制作 - 在javascript变量声明中。
  • 我们可以看到,服务器刚刚发送了&#34; var test =&#39; test&#39;&#34;并且没有做任何javascript所以&#39; var&#39;对服务器来说并不重要
  • 当它从服务器到达浏览器时,这实际上是有意义的并且被执行了!

因此,对于服务器,&#39; var test =&#39;只是字符串&#39; var test =&#34; test&#34 ;;&#39;而对于浏览器中的Javascript,它意味着变量test包含一个字符串&#39; test&#39;

编辑:如果在从服务器发送的页面的for循环中使用,当页面到达浏览器的任何地方出现echo php脚本时,已经有回显的字符串

答案 3 :(得分:1)

我会尝试尽可能简单地说出来。你知道PHP是服务器端,JS是客户端,你在这方面是正确的。

PHP作为一种语言运行它生成的HTML内容以推送到客户端(浏览器)。所以当你运行你的javascript:

for(var i=0; i<10; i++){
    var test = "<?php echo 'test'; ?>";
    console.log(test);
}

在javascript知道它完成任何事情之前评估PHP。基本上使你的小脚本看起来像这样:

for(var i=0; i<10; i++){
    var test = "test";
    console.log(test);
}

上面的脚本中没有涉及ajax。