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

zbwhf8kr  于 2021-06-20  发布在  Mysql
关注(0)|答案(4)|浏览(437)

我有这个密码:

<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的。当一种语言在客户机上运行,另一种语言在服务器上运行时,问题和解决方案的本质对于任何一对语言都是相同的(即使它们是同一种语言)。当你看到关于特定语言的答案时,请考虑到这一点。

sy5wg1nm

sy5wg1nm1#

javascript将在客户端而不是服务器上执行。这意味着 foo 不会在服务器端计算,因此无法将其值写入服务器上的文件。
考虑这个过程的最佳方法是,将其视为动态生成文本文件。您生成的文本只有在浏览器解释后才成为可执行代码。只有你所说的 <?php 在服务器上评估标记。
顺便说一句,养成在html或javascript中嵌入随机php逻辑片段的习惯会导致严重的代码复杂化。我是从痛苦的经历说起的。

oo7oh9g9

oo7oh9g92#

在web应用程序中,每个任务都以请求和响应的方式执行。
客户端编程是用带有java脚本及其框架的html代码,库在internetexplorer、mozilla、chrome浏览器中执行。在java场景中,服务器端编程servlet在tomcat、web logic、j boss、websphere服务器中执行

uxhixvfz

uxhixvfz3#

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

|
               ---------->
              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>

第一步,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请求。这可以通过以下三种方法之一实现:
使浏览器加载新页面的链接。
表单提交,将数据提交到服务器并加载新页面。
ajax请求,这是一种javascript技术,用于向服务器发出常规http请求(如1。和2。将),但不离开当前页。
下面是一个更详细地概述这些方法的问题
您还可以使用javascript使浏览器使用 window.location 或者提交一个表格,模拟可能性1。和2。

np8igboo

np8igboo4#

要确定为什么php代码不能在javascript代码中工作,我们需要了解什么是客户端和服务器端语言,以及它们是如何工作的。
服务器端语言(php等):它们从数据库中检索记录,通过无状态http连接维护状态,并执行许多需要安全性的操作。它们驻留在服务器上,这些程序从不向用户公开其源代码。

图像属性
因此,您可以很容易地看到服务器端语言处理http请求并对其进行处理,正如@deceze所说,php在服务器上执行并输出一些html,可能还有javascript代码,这些代码作为响应发送给客户端,在客户端解释html并执行javascript。
另一方面,客户端语言(如javascript)驻留在浏览器中并在浏览器中运行。客户端脚本通常是指由用户的web浏览器在客户端而不是服务器端执行的web上的计算机程序类。
javascript对用户是可见的,并且可以很容易地修改,因此对于安全性方面,我们不能依赖javascript。
因此,当您在服务器上发出http请求时,服务器首先仔细阅读php文件以查看是否有任何需要执行的任务,然后向客户端发送响应。同样,正如@deceze所说,一旦php输出完响应,脚本就结束了,在新的http请求到来之前,服务器上不会发生任何事情

图像源
那么现在如果我需要调用php怎么办呢?这取决于您需要如何做:要么重新加载页面,要么使用ajax调用。
您可以通过重新加载页面并发送http请求来完成
您可以使用javascript进行ajax调用—这不需要重新加载页面
读得好:
维基百科:服务器端脚本
维基百科:客户端脚本
madara uchiha:客户端和服务器端编程的区别

相关问题