PHP / JavaScript:通过AJAX调用PHP类.PHP 类的多个实例


PHP / JavaScript: Calling a PHP Class via AJAX. Multiple Instances of the PHP Class

也许这是一个愚蠢的问题。但无论如何,这是我的问题。我的项目中有多个类。

一开始调用类 Calculate($param 1, $param 2...) 的构造函数。

这个计算类通过jQuery事件(单击,更改等)多次调用,具体取决于填充的新表单字段。价格和价值由php在后台计算,并通过AJAX在网站上表示(打字时实时)。

AJAX

和 Compute 类之间的连接是一个文件(jsonDataHanlder),该文件从 AJAX 接收 POST 值,并为网站输出返回一个 JSON 字符串。因此,每次我调用此jsonDataHandler时,都会创建一个新的计算对象。使用更新的值,但从不使用第一个创建的对象。正如您可以想象的那样,我现在遇到了多个问题。

如何始终访问同一对象而不创建新对象?

编辑:由于技术原因,我无法使用会话。

下面是 php 应用程序的生命周期:

  • 浏览器向网络服务器发送 http 请求
  • Web服务器(例如Apache),接受请求并启动您的php应用程序(在本例中为jsonDataHandler文件)
  • 您的 php 应用程序处理请求并生成输出
  • 您的 php 应用程序终止
  • Web服务器将php应用程序生成的响应发送到浏览器
因此,应用程序在每个请求

结束时"死亡",您无法创建将在请求之间持久存在的对象。

可能的解决方法:

    将数据
  • 持久保存在服务器上 - 使用会话或数据库(正如您所说,这不是您的选择)
  • 将数据
  • 保留在客户端上 - 您仍然为每个请求创建对象,但您在客户端保留其他信息以便能够恢复对象的状态(请参阅下文)
  • 使用类似 reactphp 的东西来让你的应用程序持久运行(这也可以不是一个选项,因为你需要使用不同的环境)。此选项的差异 - 切换到另一种不会每次重新启动服务器端应用程序的技术(node.js,python+flask等)。

因此,如果无法在服务器上保留数据,则相对简单的选项是在客户端上保留数据。

但是,这仅在您需要为每个单独的客户端保留计算器的状态时才有效(与为所有客户端保持相同的状态相比,在这种情况下,您确实需要在服务器上保留数据)。

具有客户端状态的流可以是:

  • 客户端发送第一个计算请求,例如param1=10
  • 脚本的响应value=100
  • 客户端代码将param1=10param1_value=100存储到 Cookie 或浏览器本地存储中
  • 客户端发送下一个计算,例如param2=20,这次客户端代码查找之前的结果并将所有内容一起发送(param1=10&param1_value=100&param2=20
  • 在服务器上,您现在可以重新创建整个计算序列,因此您可以获得与拥有持久Calculate对象相同的结果

也许您应该尝试将 Compute 对象的参数值保存在数据库中,并且每次进行 AJAX 调用时,您都会从数据库中获取最新值。