我有一个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需要调用该方法。
如果我回到datastuff.php会不会丢失$ MyObject? 如果我将其设为Singleton或Global,那么这会起作用吗? 我看着这个,这是一个类似的问题,我不是我想要的: Using JQuery ajax to call a PHP file, process, but stay on same page
答案 0 :(得分: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请求之后),但假设已获得相同的数据,则每个请求中的{{1}}可能相同。单击按钮后,对“datastuff.php?action = do_something”的ajax请求将确保调用相关方法。
虽然这样的事情会起作用,但这不是好的代码设计。我建议你花些时间研究MVC(模型,视图,控制器)模式。