Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/260.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 客户端编程和服务器端编程有什么区别?_Javascript_Php_Client Side_Server Side - Fatal编程技术网

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

Javascript 客户端编程和服务器端编程有什么区别?,javascript,php,client-side,server-side,Javascript,Php,Client Side,Server Side,我有以下代码: <script type="text/javascript"> var foo = 'bar'; <?php file_put_contents('foo.txt', ' + foo + '); ?> var baz = <?php echo 42; ?>; alert(baz); </script> 为什么这不会将bar写入我的文本文件,而是警报42 注意:这个问题的早期

我有以下代码:

<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请求 | +-------+ | +-------+ | | | | | |浏览器| | | web服务器| |JavaScript | | | PHP等| | | | | | +-------+ | +-------+ | 客户端|服务器端 | 调用产生了输出42,它现在位于代码原来所在的位置

生成的HTML/JavaScript代码现在被发送到客户端,在那里对其进行评估。警报调用起作用,而foo变量不在任何地方使用

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

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

链接,使浏览器加载新页面。 表单提交,向服务器提交数据并加载新页面。 请求,这是一种Javascript技术,用于向服务器发出常规HTTP请求,如1。二,。将,但不离开当前页面。
您还可以使用JavaScript使浏览器使用window.location打开新页面,或提交表单,模拟可能性1。和2.

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

考虑此过程的最佳方式是,将其视为动态生成文本文件。您生成的文本只有在浏览器解释后才成为可执行代码。要确定为什么PHP代码不能在JavaScript代码中工作,我们需要了解什么是客户端语言和服务器端语言,以及它们是如何工作的

服务器端语言PHP等:它们从数据库中检索记录,在服务器端维护状态,并执行许多需要安全性的操作。它们驻留在服务器上,这些程序从不向用户公开其源代码

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

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

JavaScript对用户是可见的,并且可以很容易地修改,因此对于安全性方面的内容,我们不能依赖JavaScript

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

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

您可以通过重新加载页面并发送HTTP请求来完成此操作 您可以使用JavaScript进行AJAX调用—这不需要重新加载页面 好书:


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

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

这里的答案值得注意,因为它提到了/a interpeter。但是,javascript可以在服务器环境中编译和运行,也可以由服务器进行解释。您还可以使用window.open打开第二个页面,或者使用iframe加载页面。可能值得将WebSocket添加到通信方法列表中。如果我们说drop do呢
wn值通过jquery更新。当用户执行步骤2时。表单提交,通过提交按钮将数据提交到服务器并加载新页面,jquery更新的值是否能够在php中传递给控制器?或者,由于php是通过jquery添加到dom中的,所以它们对php不可见吗@deceze@Fabricio将根据数据创建HTTP请求并发送到服务器。您可以使用Javascript操纵表单,使其包含不同的数据。是的,如果数据在提交时是表单的一部分,那么该数据将成为结果HTTP请求的一部分;不管它是在原始HTML中还是后来通过Javascript添加的。
<script type="text/javascript">
    var foo = 'bar';
    <?php
        file_put_contents('foo.txt', ' + foo + ');
    ?>

    var baz = <?php echo 42; ?>;
    alert(baz);
</script>
<script type="text/javascript">
    var foo = 'bar';

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