8wDlpd.png
8wDFp9.png
8wDEOx.png
8wDMfH.png
8wDKte.png

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

killa_whale 2月前

51 0

我有这个代码:

帖子版权声明 1、本帖标题:客户端和服务器端编程有什么区别?
    本站网址:http://xjnalaquan.com/
2、本网站的资源部分来源于网络,如有侵权,请联系站长进行删除处理。
3、会员发帖仅代表会员个人观点,并不代表本站赞同其观点和对其真实性负责。
4、本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报
5、站长邮箱:yeweds@126.com 除非注明,本帖由killa_whale在本站《ajax》版块原创发布, 转载请注明出处!
最新回复 (0)
  • 您的代码被分成两个完全独立的部分,即 服务器端 客户端 .

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

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

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

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

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

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

  • 您还可以使用 window.open 打开第二页或使用 iframe 加载页面。

  • 如果说下拉列表值通过 jquery 更新,会怎么样?当用户执行步骤 2 时。表单提交(即通过 \'Submit\' 按钮将数据提交到服务器并加载新页面)是否可以将 jquery 更新的值传递给 php 中的控制器?或者,由于已通过 jquery 将其添加到 dom,因此 php 看不到它们?@deceze

  • D B 2月前 0 只看Ta
    引用 5

    @Fabricio 将从

    data and sent to the server. You can manipulate forms using Javascript to have them contain different data. Yes, that data will be part of the resulting HTTP request if it's properly part of the form when it is being submitted; it doesn't matter whether it was in the original HTML or added afterwards via Javascript.
  • 您说它只是将 \' + foo + \' 写入文件,因此可以推测该文件现在位于服务器文件系统的某个位置?这有点不清楚,因为您的答案中没有明确说明。

  • LulY 2月前 0 只看Ta
    引用 7

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

    服务器端语言(PHP 等) 无状态 HTTP 连接 stateless HTTP connection ,并执行许多需要安全性的操作。它们驻留在服务器上,这些程序的源代码永远不会暴露给用户。

    Image from wikipedia_http://en.wikipedia.org/wiki/File:Scheme_dynamic_page_en.svg图像属性

    因此,您可以轻松地看到服务器端语言处理 HTTP 请求并处理它们,并且正如 @deceze 所说, PHP 在服务器上执行并输出一些 HTML 和可能的 JavaScript 代码,这些代码作为响应发送到客户端,在客户端中解释 HTML 并执行 JavaScript。

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

    JavaScript 对用户是可见的,并且可以轻松修改,因此对于安全问题,我们不能依赖 JavaScript。

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

    Graphical representation

    图片来源

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

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

    推荐阅读:

    1. 维基百科:服务器端脚本
    2. 维基百科:客户端脚本
    3. 宇智波斑:客户端和服务器端编程之间的区别
  • 您的 Javascript 将在客户端而不是服务器上执行。这意味着 foo 不会在服务器端进行评估,因此其值无法写入服务器上的文件中。

    思考此过程的最佳方式是,假设您正在动态生成文本文件。您生成的文本只有在浏览器解释后才会成为可执行代码。只有您放置在 <?php 标签之间的内容才会在服务器上进行评估。

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

  • 您的回答值得注意,因为它提到了解释器。但是,javascript 可以在服务器环境中编译和运行,并且也可以由服务器进行解释。

返回
作者最近主题: