gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-28 03:51:24 24 4
gpt4 key购买 nike

我有这个代码:

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

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

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

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

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

Here's a question outlining these method in greater detail

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

关于javascript - 客户端和服务器端编程有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47970374/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com