在Javascript和PHP之间进行通信

时间:2012-11-28 21:58:17

标签: php javascript ajax

我一直在玩用javascript / PHP模拟命令行的想法。基本的想法是,我希望能够像在命令行上一样运行c ++程序。

我使用javascript创建了一个基本控制台,并使用C ++的代码解析器将某些内容添加到原始源,以使我的PHP程序执行脚本能够识别何时有输入请求或程序何时结束。现在,我希望能够在javascript(控制台web应用程序)和PHP(程序执行)之间进行通信,以便PHP可以告诉javascript显示什么(输出)和请求输入。

我用AJAX计划过它。一旦用户在控制台(javascript端)上输入程序运行命令,它将切换到执行状态并向具有程序名称的PHP脚本发送请求。该脚本将启动该过程并通过回显结果结束。根据请求响应,javascript将再次向PHP脚本发送请求,该脚本将从其离开的位置进行选择并回显另一个结果以便javascript接收。这将持续到PHP脚本回显错误字符串或终止字符串。

在使用AJAX进行了许多天真的尝试之后,我知道我的想法是完全错误的。我一直在想是否有另一种方法可以在两端之间进行通信。有没有办法可以保存我的PHP脚本的状态(资源,变量和文件句柄),这样每当我从javascript端发送请求时,我可以从上次停止的地方继续输出?

我还没有找到一个,这让我相信这种方法是一厢情愿的想法。

我真的很感激一些见解。

3 个答案:

答案 0 :(得分:6)

PHP Sessions

  

<强>会话

     

PHP中的会话支持包括一种在后续访问中保留某些数据的方法。这使您可以构建更多自定义应用程序并增加网站的吸引力。所有信息都在会话参考部分。

答案 1 :(得分:0)

使用PHP Sessions库(由epascarello建议)可能是您最好的选择。但是,如果您想“自己动手”,或者您只是想了解像PHP Sessions这样的库是如何工作的,那么基本要点是:

  1. 如果您希望最初从服务器传递到客户端的数据,请将该数据写入页面。例如<script>var serverData = <?= serverDataVariable ?>;(我的PHP有点生疏;如果语法关闭,请原谅我。)

  2. 如果您希望在最后将任何数据传递到服务器,请将该数据放在HTML表单中,并将该表单的操作设置为服务器端处理程序的URL。这样,当用户提交表单时,其中的所有数据都将被发送到该URL(在GET或POST参数中,具体取决于您设置表单的方式)。

  3. 如果你想在1.和2.之间的任何时间进行交流,你需要使用AJAX(嗯,你也可以使用彗星,但这是先进的,所以不要担心关于它)。 AJAX使用浏览器的XmlHttpRequest来实质上进行表单提交,只需“幕后”而不需要更改页面。 AJAX请求可以提供参数(就像表单提交一样),并且它们也返回来自服务器的数据(几乎与您最初将该数据写入页面一样)。

答案 2 :(得分:0)

我建议使用基于AJAX的websockets,可能使用Ratchet

虽然它是用Node.js而不是PHP编写的,但您可以在tty.js

中找到一些灵感。 祝你好运!