为什么服务器端和客户端脚本无法交互
Why can't server side and client side scripts interact?
我是客户端和服务器端脚本的新手,我想知道,为什么它们不能交互?
Code Conquest 在这里陈述的主要区别在于:
。之所以称为客户端语言,是因为它在加载网页后在计算机上运行脚本。
和
服务器端或后端语言在加载 HTML 之前运行其脚本,而不是加载之后。
即使服务器端脚本(例如.PHP)已经执行,为什么在页面加载后不能更改(使用 JavaScript)?
我想从JS调用PHP。例如,有没有可能的方法可以做到这一点?
setInterval(<?php someFunction() ?>,10000);
对不起,如果我误解了什么,请指出给我。
好吧,他们可以互动,但不像你想象的那样。
将客户端 JavaScript 视为浏览器,
将服务器端代码视为服务器端代码。然后它们将通过彼此之间发送消息进行通信,最常用的消息交换方法是 JSON。
总而言之,客户端代码可以通过GET
或POST
请求或使用 AJAX 与服务器通信。
服务器可以响应这些消息,并且还可以(这是在 HTML 5 标准中添加的)使用 WebSocket 向客户端发送事件。
它们无法交互(有点 - 在下面更详细地解释),因为它们在两个不同的地方运行。服务器端脚本 - 例如,PHP,将在服务器上运行,并在数据发送到用户的PC之前完成运行。
客户端脚本(例如,Javascript)在用户完成加载页面数据时开始运行。
因此,简而言之,PHP 甚至在 JS 开始执行之前就完成了执行 - 因此它们无法真正交互。
如何让它们交互是通过一些技巧和 JS 内部的调用来请求服务器的其他数据 - 所以在这一点上它们仍将单独运行,但您可以通过页面中进行的其他调用让它们交谈。
使用这种方法,即使它们完全独立于彼此地执行,它们也能够通过数据(例如JSON对象)交换信息,并给人一种它们正在一起工作的印象,尽管它们在完全不同的地方进行。
非技术类比
为了使用一个完全非IT的类比,希望能更清楚地说明这一点,假设服务器端脚本是一个军事基地。客户端脚本是部署到另一个国家/地区的单元。他们都在那里完成一项特定的任务,但他们完全独立地彼此工作。现在,JSON就像他们之间的电话。部署的单位可以打电话给基地,询问进一步的指示,然后执行它们,但就基地而言,他们不知道发生了什么,直到部署的单位再次打电话回家——所以他们可以一起工作,但单独这样做,不知道对方到底在做什么。
最简单的方法是使用 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);
或分配给变量:
yourvar = request.responseText;
setInterval(yourvar, 10000);
然后在您的文件中.php:
$func = $_GET['func'];
//use $func to call func or do other stuff
客户端在计算机浏览器上运行。服务器端在服务器上运行,并生成发送到客户端的代码。
Ajax或jQuery可以直接从服务器获取和发送数据。
- 当包含另一个asp文件时,是否也包含所有引用的样式和脚本页面
- 借助asp.net验证或java脚本对多个文本进行验证
- chrome扩展:尽管运行了at:documentidle,js脚本还是过早启动
- Java脚本时间添加
- 不显示带有本地json文件数据的谷歌地图脚本
- 用于编写与我作为客户端查看的网页交互的脚本的术语(如果有的话)是什么
- 谷歌应用程序脚本:如何在没有用户交互的情况下调用绑定到处理程序的函数
- 为什么服务器端和客户端脚本无法交互
- 需要检测网页中哪个<脚本>块与哪些其他<脚本>块交互
- 谷歌脚本:与脚注交互
- Safari扩展注入了脚本/网页交互
- QUnit一个页面中有多个脚本,但它们之间没有交互
- 在phantomjs交互(REPL)模式下执行脚本
- iframe中的脚本可以与主页面的脚本交互吗?
- 如何使用javascript从php脚本交互获取数据
- 使greasemonkey脚本与正在运行的进程交互
- HTML和JSON之间交互的脚本帮助
- Jquery脚本未引起任何交互
- 桌面应用程序/脚本,以便在web应用程序上与javascript进行交互
- 服务器上的脚本与客户端 Javascript 交互