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

PHP/JavaScript:通过AJAX调用PHP类。PHP类的多个实例,php,jquery,json,ajax,oop,Php,Jquery,Json,Ajax,Oop,也许这是个愚蠢的问题。但无论如何,这是我的问题。我的项目中有多个类 在开始时,调用类Calculate的构造函数($param1,$param2…) 根据填写的新表单字段,通过jQuery事件(单击、更改..)多次调用此计算类。。价格和价值由php在后台计算,并通过AJAX(边打字边直播)在网站上表示 AJAX和Calculate类之间的连接是一个文件(jsonDataHanlder)。该文件从AJAX接收POST值,并为网站输出返回一个JSON字符串。所以每次我调用这个jsonDataHand

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

在开始时,调用类Calculate的构造函数($param1,$param2…)

根据填写的新表单字段,通过jQuery事件(单击、更改..)多次调用此计算类。。价格和价值由php在后台计算,并通过AJAX(边打字边直播)在网站上表示

AJAX和Calculate类之间的连接是一个文件(jsonDataHanlder)。该文件从AJAX接收POST值,并为网站输出返回一个JSON字符串。所以每次我调用这个jsonDataHandler时,都会创建一个新的Calculate对象。使用更新的值,但从不使用第一个创建的对象。正如你所能想象的,我现在正经历着多重问题

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


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

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

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

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

  • 浏览器向web服务器发送http请求
  • Web服务器(例如Apache)接受请求并启动php应用程序(在本例中为JSONDATADHANDER文件)
  • php应用程序处理请求并生成输出
  • 您的php应用程序终止
  • Web服务器将php应用程序生成的响应发送到浏览器
因此,应用程序在每个请求结束时“死亡”,您不能创建在请求之间持久存在的对象

可能的解决办法:

  • 在服务器使用会话或数据库上持久化数据(正如您所说,这不是您的选项)
  • 在客户机上持久化数据-您仍然为每个请求创建对象,但是您在客户机端保留了其他信息,以便能够恢复对象的状态(请参阅下面的详细信息)
  • 使用类似于让应用程序持续运行的方式(这也不是一个选项,因为您将需要使用不同的环境)。此选项的变化-切换到另一种技术,这种技术不会每次重新启动服务器端应用程序(node.js、python+flask等)
因此,如果无法将数据持久化到服务器上,相对简单的选择是将数据持久化到客户机上

但是,只有当您需要为每个客户机保持计算器的状态时,这才有效(与为所有客户机保持相同的状态相比,在这种情况下,您确实需要在服务器上持久化数据)

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

  • 客户端发送第一个计算请求,例如
    param1=10
  • 您的脚本响应为
    value=100
  • 客户端代码将
    param1=10
    param1_值=100
    存储到cookie或浏览器本地存储中
  • 客户端发送下一个计算,例如
    param2=20
    ,这一次客户端代码查找以前的结果并将所有结果一起发送(
    param1=10¶m1\u value=100¶m2=20
  • 现在,您可以在服务器上重新创建整个计算序列,这样您就可以得到与持久
    Calculate
    对象相同的结果

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

      • 浏览器向web服务器发送http请求
      • Web服务器(例如Apache)接受请求并启动php应用程序(在本例中为JSONDATADHANDER文件)
      • php应用程序处理请求并生成输出
      • 您的php应用程序终止
      • Web服务器将php应用程序生成的响应发送到浏览器
      因此,应用程序在每个请求结束时“死亡”,您不能创建在请求之间持久存在的对象

      可能的解决办法:

      • 在服务器使用会话或数据库上持久化数据(正如您所说,这不是您的选项)
      • 在客户机上持久化数据-您仍然为每个请求创建对象,但是您在客户机端保留了其他信息,以便能够恢复对象的状态(请参阅下面的详细信息)
      • 使用类似于让应用程序持续运行的方式(这也不是一个选项,因为您将需要使用不同的环境)。此选项的变化-切换到另一种技术,这种技术不会每次重新启动服务器端应用程序(node.js、python+flask等)
      因此,如果无法将数据持久化到服务器上,相对简单的选择是将数据持久化到客户机上

      但是,只有当您需要为每个客户机保持计算器的状态时,这才有效(与为所有客户机保持相同的状态相比,在这种情况下,您确实需要在服务器上持久化数据)

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

      • 客户端发送第一个计算请求,例如
        param1=10
      • 您的脚本响应为
        value=100
      • 客户端代码将
        param1=10
        param1_值=100
        存储到cookie或浏览器本地存储中
      • 客户端发送下一个计算,例如
        param2=20
        ,这一次客户端代码查找以前的结果并将所有结果一起发送(
        param1=10¶m1\u value=100¶m2=20
      • 在服务器上,您现在可以重新创建整个计算序列,这样您就可以得到与y相同的结果