问题:客户端编程和服务器端编程有什么区别?

我有此代码:

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

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

为什么这不将" bar"写到我的文本文件中,但提示" 42"?


NB:此问题的早期修订版明确涉及服务器上的PHP和客户端上的JavaScript。当一对 any 语言在客户端上运行而另一种在服务器上运行时,问题和解决方案的本质本质是相同的(即使它们是相同的语言)。当您看到有关特定语言的答案时,请考虑到这一点。

标签:javascript,php,client-side,server-side

回答1:

您的代码分为两个完全独立的部分,分别是服务器端客户端

                    |
               ---------->
              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执行 标记之间的所有代码。结果是这样的:

<script type="text/javascript">
    var foo = 'bar';

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

file_put_contents调用没有任何结果,它只是在文件中写入了" + foo +"。 调用导致输出" 42",现在位于该代码以前的位置。

此生成的HTML / JavaScript代码现在发送到客户端,并在此进行评估。 alert调用有效,而foo变量未在任何地方使用。

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

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

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

这是一个概述这些方法的问题详细信息

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

回答2:

要确定为什么 PHP 代码不能在 JavaScript 代码中运行,我们需要了解客户端服务器端< / strong>语言以及它们的工作方式。

服务器端语言(PHP等):它们从数据库中检索记录,并通过无状态的 HTTP 连接时,会做很多需要安全的事情。它们驻留在服务器上,这些程序永远不会向用户公开其源代码。

图片属性

因此,您可以轻松地看到服务器端语言可以处理HTTP请求并对其进行处理,正如@deceze所说, PHP在服务器上执行,并输出一些HTML以及JavaScript代码,这些代码以响应客户端,解释HTML并执行JavaScript。

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

JavaScript对用户可见,并且可以轻松修改,因此出于安全性考虑,我们决不能依赖JavaScript。

因此,当您在服务器上发出 HTTP 请求时,服务器首先会仔细读取PHP文件,以查看是否有任何需要执行的任务,然后将响应发送给客户端。再次,如@deceze所说,*一旦PHP完成输出响应,脚本便会结束,并且直到新的 HTTP 请求进入服务器之前,服务器上都不会发生任何事情。*

图像源

那么现在如果我需要调用PHP怎么办?这取决于您需要执行的操作:通过重新加载页面或使用AJAX调用。

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

好书:

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

回答3:

您的Javascript将在客户端而不是服务器上执行。这意味着foo不会在服务器端进行评估,因此无法将其值写入服务器上的文件。

考虑此过程的最佳方法是好像正在动态生成文本文件。您生成的文本仅在浏览器解释后才成为可执行代码。服务器上只会评估您放置在 标记之间的内容。

顺便说一句,养成在HTML或Javascript中嵌入随机PHP代码逻辑的习惯,可能会导致代码复杂化。我从痛苦的经历中发言。

回答4:

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

客户端编程是使用带有Java脚本及其框架的html代码进行的,库是在Internet Explorer,Mozilla和chrome浏览器中执行的。在Java场景中,服务器端编程servlet在Tomcat,web-logic,j boss,WebSphere服务器中执行

回答5:

我将尝试以一种简单的方式进行解释。

客户端是用户看到/编码的内容,在浏览器中可见。

客户端编程包括HTML(HTML,HTML5,DHTML),CSS(CSS,CSS3)和JavaScript(JavaScript,ES5,ES6,ES7,TypeScript,JQuery,ReactJs,AngularJs,BackboneJs或任何其他JavaScript前端框架)。

客户端编程专注于"页面外观"及其在浏览器中的行为。

  1. 我们看到的是HTML。
  2. CSS决定其设计(颜色,浮动图像,填充等)。
  3. JavaScript监视器页面信息。 JavaScript会执行所有API调用并通过DOM维护数据。

服务器端编程包括向客户端提供数据的代码。用户永远无法看到服务器端。

服务器端编程涉及编程语言(Java,PHP,.Net,C#,C,C ++,NodeJS等),数据库(SQL,Oracle,MySql,PostgreySql,No-Sql,MongoDB等),第三方API(休息,肥皂),业务逻辑。

服务器端编程着重于"如何使数据可用于客户端"。

  1. 服务器端语言负责在不同的数据源(例如数据库,第三方API,文件系统,区块链等)之间进行通信。这些语言维护用于客户端进行交互的特定API。
  2. 数据库负责存储信息。
  3. Business Logic定义了"如何使用数据以及如何处理数据"。

客户端通过服务器端提供的API从服务器端请求数据或请求存储数据。数据请求和响应是通过遵循HTTP / FTP协议(例如REST API,SOAP API)完成的。

回到顶部