JavaScript客户端编程和服务器端编程有什么区别?

我有以下代码:

<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变量未在任何地方使用。

要调用一些PHP代码,客户端将必须向服务器发送新的HTTP请求。使用三种可能的方法之一可以发生这种情况:

  1. 链接,使浏览器加载新页面。
  2. 表单提交,它将数据提交到服务器并加载新页面。
  3. 一个[AJAX]请求,这是一个JavaScript技术,使一个普通的HTTP请求到服务器(如1和2会),而无需离开当前页面。

您还可以使用JavaScript来window.location模拟或可能性1.和2. ,使浏览器使用或提交表单来打开新页面。

以上是 JavaScript客户端编程和服务器端编程有什么区别? 的全部内容, 来源链接: utcz.com/qa/429050.html

回到顶部