1

我有一个 PHP 文件,.../datastuff.php 在此页面上实例化了一个 PHP 对象。(该类写在另一个文件中)。

public class MyClass{

        //....
       public function doAfterClick(){
        //.....
       }
}

所以在 datastuff.php 我做

$MyObject = new MyClass();
 //user specific data is added to $MyObject

现在我想在用户按下 datastuff.php 上的按钮时调用 $MyObject->doAfterClick()

我认为 AJAX 是此类问题的通用解决方案。但我不知道该怎么做?如果我想调用写在另一个页面上的 PHP 函数,我可以使用 AJAX 将数据发布到该页面。但我想留在这个页面上,因为 MyObject 需要调用该方法。

如果我 POST 回 datastuff.php 不会丢失 $MyObject 吗?如果我将其设为 Singleton 或 Global 这会起作用吗?我看了这个,这是一个类似的问题,但不是我想要的: Using JQuery ajax to call a PHP file, process, but stay on the same page

4

1 回答 1

3

这是基本思想:

# datastuff.php

// This object will be created upon each request
$MyObject = new MyClass();

$action = (array_key_exists('action', $_GET)) ? $_GET['action'] : '';
switch ($action) {
    case 'do_something':
        $response = $MyObject->doAfterClick();
        // Output relevant feedback to the user or redirect them somewhere based on the response

        // This was most likely called via AJAX, so perhaps output JSON data or
        // some other means of communicating the response back to the javascript
        break;

    case 'do_something_else':
        // etc...
        break;

    default:

        // Present the information to the user...

        break;
}

$MyObject将在每个请求时创建(即在初始页面加载时以及在单击按钮并触发 AJAX 请求后),但假设它已被赋予相同的数据,则它在每个请求中可能是相同的。单击按钮后,对“datastuff.php?action=do_something”的 ajax 请求将确保调用相关方法。

虽然这样的事情会起作用,但它不是好的代码设计。我建议您花一些时间研究 MVC(模型、视图、控制器)模式。

于 2012-11-30T15:49:03.623 回答