·您现在的位置: 云翼网络 >> 文章中心 >> 网站建设 >> 网站建设开发 >> php网站开发 >> ajax + php + Controller 控制所有后台函数调用

ajax + php + Controller 控制所有后台函数调用

作者:佚名      php网站开发编辑:admin      更新时间:2022-07-23
Ajax + php + Controller 控制所有后台函数调用

转载请注明出处:http://www.cnblogs.com/ghypnus/p/4645873.html

好久没有来这边发布代码了

总共分成3大部分来完成php的ajax调用逻辑,以下是大致的结构

第一部分:ajax请求:主要是action这个参数,LoginController是php的类名,login是LoginController这个类中的函数名

$('#submit').on('click', function (e) {        e.stopPRopagation();        $.ajax({            url: "../../controllers/Controller.php",            data: {                action: "LoginController/login",                username: username,                passWord: password            },            dataType: "text",            type: 'POST',            timeout: 10000,            error: function () {                alert("服务器超时");            },            success: function (data) {                    alert(data);            }        });    });

第二部分:Controller.php,这个文件是调用其他具体的功能类的控制器,起到枢纽作用,主要是通过反射来实现

<?phpif (!empty($_REQUEST['action'])) {    try {        $action = explode('/', $_REQUEST['action']);        $class_name = $action[0];        $method_name = $action[1];        require $class_name . '.php';        $class = new ReflectionClass($class_name);        if (class_exists($class_name)) {            if ($class->hasMethod($method_name)) {                $func = $class->getmethod($method_name);                $instance = $class->newInstance();                $func->invokeArgs($instance, array($_REQUEST));                $result = $instance->getResult();                echo $result;            }        }    } catch (Exception $exc) {        echo $exc->getTraceAsString();    }}?>

第三部分:LoginController.php,这个文件是具体的功能类

<?phpclass LoginController {      private $result;    function LoginController() {        //初始化数据库连接等参数    }    function login($args) {       //具体的登录逻辑    }    function getResult() {        return $this->result;    }}?>