免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1659 | 回复: 0
打印 上一主题 下一主题

ajax + php + Controller 控制所有后台函数调用 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2015-07-15 08:56 |只看该作者 |倒序浏览
转载来自:http://www.cnblogs.com/ghypnus/p/4645873.html

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

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

第一部分:ajax请求:主要是action这个参数,LoginController是php的类名,login是LoginController这个类中的函数名
  1. $('#submit').on('click', function (e) {
  2.         e.stopPropagation();
  3.         $.ajax({
  4.             url: "../../controllers/Controller.php",
  5.             data: {
  6.                 action: "LoginController/login",
  7.                 username: username,
  8.                 password: password
  9.             },
  10.             dataType: "text",
  11.             type: 'POST',
  12.             timeout: 10000,
  13.             error: function () {
  14.                 alert("服务器超时");
  15.             },
  16.             success: function (data) {
  17.                     alert(data);
  18.             }
  19.         });
  20.     });
复制代码
第二部分:Controller.php,这个文件是调用其他具体的功能类的控制器,起到枢纽作用,主要是通过反射来实现
  1. <?php

  2. if (!empty($_REQUEST['action'])) {
  3.     try {
  4.         $action = explode('/', $_REQUEST['action']);
  5.         $class_name = $action[0];
  6.         $method_name = $action[1];
  7.         require $class_name . '.php';
  8.         $class = new ReflectionClass($class_name);
  9.         if (class_exists($class_name)) {
  10.             if ($class->hasMethod($method_name)) {
  11.                 $func = $class->getmethod($method_name);
  12.                 $instance = $class->newInstance();
  13.                 $func->invokeArgs($instance, array($_REQUEST));
  14.                 $result = $instance->getResult();
  15.                 echo $result;
  16.             }
  17.         }
  18.     } catch (Exception $exc) {
  19.         echo $exc->getTraceAsString();
  20.     }
  21. }
  22. ?>
复制代码
第三部分:LoginController.php,这个文件是具体的功能类
  1. <?php

  2. class LoginController {
  3.   
  4.     private $result;

  5.     function LoginController() {
  6.         //初始化数据库连接等参数

  7.     }

  8.     function login($args) {
  9.        //具体的登录逻辑
  10.     }

  11.     function getResult() {
  12.         return $this->result;
  13.     }

  14. }

  15. ?>
复制代码
code in my life.
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP