我正在努力将我的标准PHP项目转换为OOP,但我遇到了关于如何使用PHP类处理AJAX调用的问题.我对我现在这样做的方式不满意.我有一个TillAjax.php文件,我从一个AJAX调用的TillUI.php文件中调用它.
在TillAjax.php文件中,我这样做是为了获取从ajax调用传递的信息.
$till = new Till();
if(isset($_POST['data']))
$till->doStuff($_POST['data']);
Run Code Online (Sandbox Code Playgroud)
我认为这会破坏OOP.
我使用过ASP.NET MVC,在这里可以调用控制器中的特定操作,而不必检查post值.所以我想知道是否有更聪明的PHP方法来解决上述问题?
我使用的方法是拥有一个Ajax类.
你的php文件调用Ajax::Process($_GET['handle']),其中'handle'包含静态类方法的名称,所以也许'Till :: Process'.Ajax类根据允许的函数列表(即允许通过ajax call_user_func_array调用的函数)检查函数,然后用于调用函数(我的代码使用$ _POST的内容作为参数传递给函数) .该函数的返回自动编码为json并输出到客户端.
这意味着您的目标php文件如下所示:
<?php
//File: ajax.php
include ("Ajax.php");
Ajax::Process($_GET['handle']);
?>
Run Code Online (Sandbox Code Playgroud)
我觉得这很简单.
然后你可以有这样的javascript(jquery):
$.get('ajax.php?handle=Till::Process', {}, function(result) {
//called on page response
});
Run Code Online (Sandbox Code Playgroud)
那么结果现在包含从PHP方法Till :: Process返回的任何数据.
| 归档时间: |
|
| 查看次数: |
3073 次 |
| 最近记录: |