Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/233.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,我不熟悉客户端和服务器端脚本,我想知道,它们为什么不能交互 《征服法典》所述的主要区别在于: 。。。之所以称为客户端语言,是因为它在您加载网页后在您的计算机上运行脚本 及 服务器端或后端语言在加载HTML之前而不是之后运行脚本 即使服务器端脚本(例如PHP)已经执行,为什么在页面加载后不能更改(使用JavaScript) 我想从JS调用PHP。例如,有没有一种可能的方法可以做到这一点 setInterval(<?php someFunction() ?>,10000); setIn

我不熟悉客户端和服务器端脚本,我想知道,它们为什么不能交互

《征服法典》所述的主要区别在于:

。。。之所以称为客户端语言,是因为它在您加载网页后在您的计算机上运行脚本

服务器端或后端语言在加载HTML之前而不是之后运行脚本

即使服务器端脚本(例如PHP)已经执行,为什么在页面加载后不能更改(使用JavaScript)

我想从JS调用PHP。例如,有没有一种可能的方法可以做到这一点

setInterval(<?php someFunction() ?>,10000);
setInterval(,10000);

对不起,如果我误解了什么,请告诉我。

他们可以互动,但不像你想象的那样

将客户端JavaScript视为浏览器,将服务器端代码视为服务器端代码

然后他们会通过互相发送消息进行通信,最常用的消息交换方法是JSON

总而言之,客户端代码可以通过
GET
POST
请求或使用AJAX发送消息来与服务器通信

服务器可以响应这些消息,它还可以(这是在HTML 5标准中添加的)使用WebSocket向客户端发送事件。

它们不能交互(下面有点详细解释),因为它们运行在两个不同的位置。服务器端脚本(例如PHP)将在服务器上运行,并在数据发送到用户PC之前完成运行

当用户完成加载页面数据时,客户端脚本(如Javascript)开始运行

因此,简而言之,PHP在JS开始执行之前就完成了执行,因此它们不能真正交互

如何让他们进行交互是通过一些技巧和JS内部的调用从服务器请求额外的数据-因此,在这一点上,他们仍然会单独运行,但您可以通过页面中的其他调用让他们进行对话

使用这种方法,即使它们完全独立地执行,它们也能够通过数据(如JSON对象)交换信息,并给人一种他们在一起工作的印象,尽管它们在完全不同的地方工作

非技术类比


为了使用一个完全非IT的类比(希望能让它更清楚),让我们假设服务器端脚本是一个陆军基地。客户端脚本是部署到另一个国家/地区的单元。他们都在那里完成一项特定的任务,但他们完全独立地工作。现在,JSON就像他们之间的电话。部署的部队可以打电话给基地,请求进一步的指示,然后执行这些指示,但就基地而言,在部署的部队再次打电话回家之前,他们不知道发生了什么,所以他们可以一起工作,但是单独进行操作,并且不知道对方真正在做什么。

客户端在计算机浏览器上运行。 服务器端在服务器上运行并生成发送到客户端的代码


Ajax或jQuery可以直接从服务器获取和发送数据。

最简单的方法是使用Ajax,这是一种动态生成/查找内容的轻量级方法

var ajax_call = function() {
    $.ajax({ url: 'script.php?argument=value' }); // gets the php code you need.
};

var interval = 1000 * 60 * X; // X = amount of minutes it will take till it executes.

setInterval(ajax_call, interval); // sets the ajax_call function in motion
让我知道这是否有效。

简单示例:

var request = new XMLHttpRequest();
request.open('GET', 'http://example.com/yourfile.php?func=someFunc', false);
request.send();

setInterval(request.responseText, 10000);
或分配给var:

yourvar = request.responseText;
setInterval(yourvar, 10000);
然后在yourfile.php中:

$func = $_GET['func'];
//use $func to call func or do other stuff

看看JSON RPC,这就是浏览器加载网站时发生的情况。对服务器的HTML文件请求=>PHP运行并生成一个HTML文件=>PHP退出=>browser接收该文件并呈现它并运行任何JavaScript。当您的浏览器获取页面时,PHP完成,与服务器的连接关闭。你需要研究AJAX来做你想做的事情。我想我可以使用AJAX。你为什么要做
setInterval(request.responseText,10000)?非常确定
responseText
不是一个函数。