繁体   English   中英

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

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

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

首先,调用Calculate($ param1,$ param2 ...)类的构造函数。

根据jQuery新事件(单击,更改..),多次调用此Calculate类,具体取决于填写的新表单字段。价格和值由php在后台计算,并通过AJAX在网站上表示(键入时实时显示) )。

AJAX和Calculate类之间的连接是一个文件(jsonDataHanlder),该文件从AJAX接收POST值,并为网站输出返回JSON-String。 所以每次我调用这个jsonDataHandler时,都会创建一个新的Calculate对象。 使用更新的值,但永远不会是第一个创建的对象。 您可能想像的是,我现在遇到了多个问题。

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

编辑:由于技术原因,我不能使用会议。

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

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

  • 浏览器向Web服务器发送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对象相同的结果

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM