如何通过连续的AJAX调用来维护PHP对象


How to maintain a PHP object through successives AJAX calls

我正在编写一个php页面,用于使用一些屏幕内按钮控制串口。当我按下一个按钮时,它通过串行端口发送一些数据,并显示其响应。这一切都工作正常。

现在,我需要连续监听串行端口,以便接收我没有要求的数据。我试图用javascript中的计时器来做,但每次我通过AJAX执行PHP代码时,串行端口重新启动,其缓冲区被刷新。在完成PHP代码的执行之前,我需要将控制串口的对象传递给javascript代码。当按下按钮时,我需要将这个对象传递给新的PHP代码。

我该怎么做?

Thanks to lot

首先在代码中创建一个全局js变量。当你第一次做ajax调用,然后存储响应在你的js变量。

所以每次你需要通过ajax传递全局js变量。

你可以使用

设置窗口级别的js全局变量
window.myVariable="";

确保在发送任何js请求之前定义这个变量

查看:http://php.net/manual/en/language.oop5.serialization.php您应该传递序列化的对象,或者,为了在会话之间保持串行对象的活动,将其存储在文本文件中。在AJAX端,存储为Global [WINDOW] variable。例如

window.serialphpobject = data;

然后在下一次AJAX调用时使用该数据

{object: window.serialphpobject}

很明显,没有看到你的代码,我无法准确地匹配它

我需要在完成PHP代码的执行之前将控制串行端口的对象传递给javascript代码。当按下按钮时,我需要将这个对象传递给新的PHP代码。

这个解决方案是脆弱的。您应该将这些信息保存在PHP会话中。

http://php.net/manual/en/session.examples.basic.php

我发现这是不可能做到的:当PHP代码完成其执行时,串行端口自动关闭,因此我丢失了接收到的所有数据,直到我再次打开端口。