客户端编程和服务器端编程的区别是什么?

我有这样的代码:

<script type="text/javascript">
var foo = 'bar';
<?php
file_put_contents('foo.txt', ' + foo + ');
?>


var baz = <?php echo 42; ?>;
alert(baz);
</script>

为什么这不是写“酒吧”到我的文本文件,但提醒“42”?


注意:这个问题的早期版本明确地是关于服务器上的PHP和客户端上的JavaScript。当一种语言在客户机上运行,另一种在服务器上运行时,任何语言对的问题和解决方案的本质是相同的(即使它们是相同的语言)。当你看到讨论特定语言的答案时,请把这一点考虑在内。

53119 次浏览

你的代码被分成两个完全独立的部分,服务器端客户端

                    |
---------->
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调用没有产生任何结果,它只是将“+ foo +”写入一个文件。<?php echo 42; ?>调用导致输出“42”,它现在位于代码原来所在的位置。

生成的HTML/JavaScript代码现在被发送到客户端,并在那里进行计算。alert调用可以工作,而foo变量在任何地方都不能使用。

在客户端开始执行任何JavaScript之前,所有PHP代码都在服务器上执行。响应中没有PHP代码可以与JavaScript进行交互。

为了调用一些PHP代码,客户机必须向服务器发送一个新的HTTP请求。这可以通过以下三种方法之一实现:

  1. 一个链接,它导致浏览器加载一个新页面。
  2. 表单提交,向服务器提交数据并加载新页面。
  3. AJAX请求,这是一种Javascript技术,用于向服务器发出常规HTTP请求(如1。和2。Will),但不离开当前页面。

这是一个更详细地概述这些方法的问题

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

你的Javascript将在客户端执行,而不是在服务器上。这意味着foo不在服务器端计算,因此它的值不能写入服务器上的文件。

考虑这个过程的最佳方式是,假设您正在动态生成一个文本文件。您生成的文本只有在浏览器解释后才会变成可执行代码。只有放在<?php标记之间的内容才会在服务器上计算。

顺便提一下,习惯在HTML或Javascript中嵌入随机的PHP逻辑片段会导致代码非常复杂。这是我痛苦的经历。

要确定为什么PHP代码不能在JavaScript代码中工作,我们需要了解客户端服务器端语言是什么,以及它们是如何工作的。

服务器端语言(PHP等):它们从数据库中检索记录,在无状态HTTP连接上维护状态,并做许多需要安全性的事情。它们驻留在服务器上,这些程序从未将源代码暴露给用户。

Image from wikipedia_http://en.wikipedia.org/wiki/File:Scheme_dynamic_page_en.svg # EYZ0子> < /

因此,您可以很容易地看到服务器端语言处理并处理HTTP请求,正如@ decoze所说的,PHP在服务器上执行,并输出一些HTML,可能还有JavaScript代码,这些代码作为响应发送到客户机,在客户机上解释HTML并执行JavaScript。

另一方面,客户端语言(如JavaScript)驻留在浏览器中并在浏览器中运行。客户端脚本通常是指网络上由用户的网络浏览器在客户端执行的计算机程序,而不是服务器端

JavaScript对用户是可见的,可以很容易地修改,所以在安全方面我们不能依赖JavaScript。

因此,当您在服务器上发出HTTP请求时,服务器首先仔细读取PHP文件,以查看是否有任何需要执行的任务,并向客户端发送响应。同样,正如@ decoze所说,一旦PHP完成输出响应,脚本就会结束,服务器上不会发生任何事情,直到新的HTTP请求进入

图形表示

# EYZ0

如果需要调用PHP,我该怎么做呢?这取决于您需要如何做:要么重新加载页面,要么使用AJAX调用。

  1. 您可以通过重新加载页面并发送HTTP请求来实现这一点
  2. 您可以使用JavaScript进行AJAX调用-这不需要重新加载页面

好读:

  1. 维基百科:服务器端脚本
  2. 维基百科:客户端脚本
  3. Madara Uchiha:客户端和服务器端编程的区别

在web应用程序中,每个任务都以请求和响应的方式执行。

客户端编程是html代码与Java脚本及其框架,库执行在internet explorer, Mozilla, chrome浏览器。 在java场景中 服务器端编程servlet在Tomcat、web-logic、j boss、WebSphere servers

中执行