码迷,mamicode.com
首页 > Web开发 > 详细

ThinkPHP 源码分析之常量 IS_AJAX

时间:2015-08-25 13:21:06      阅读:1564      评论:0      收藏:0      [点我收藏+]

标签:

在控制器中判断请求是否是通过 AJAX 提交,ThinkPHP(3.2.2)中在 ThinkPHP/Library/Think/App.class.php (Line:49) 中定义了常量 IS_AJAX:

define(‘IS_AJAX‘, ((isset($_SERVER[‘HTTP_X_REQUESTED_WITH‘]) && strtolower($_SERVER[‘HTTP_X_REQUESTED_WITH‘]) == ‘xmlhttprequest‘) || !empty($_POST[C(‘VAR_AJAX_SUBMIT‘)]) || !empty($_GET[C(‘VAR_AJAX_SUBMIT‘)])) ? true : false);

 

通过检测 $_SERVER[‘HTTP_X_REQUESTED_WITH‘] 的值是否是 XMLHttpRequest来判断,或者通过检测是否存在通过 POST 或者 GET 传递的 C(‘VAR_AJAX_SUBMIT‘) 的值来判断,该值是写在配置文件 ThinkPHP/Conf/convention.php(Line:159) 中:

defined(‘THINK_PATH‘) or exit();
return  array(
    //....
    /* 系统变量名称设置 */
    //....
    ‘VAR_AJAX_SUBMIT‘       =>  ‘ajax‘,  // 默认的AJAX提交变量
    //...
);

 

控制器(如果不是通过 AJAX 提交,则报错):

        if(!is_AJAX){     
           $this->error("非法请求");
         }

 

可以测试通过 AJAX 发送请求时,服务器端 $_SERVER[‘HTTP_X_REQUESTED_WITH‘] 的值(控制器):

$data =$_SERVER[‘HTTP_X_REQUESTED_WITH‘];
$this->ajaxReturn($data);

 

在浏览器中通过观察 HTTP 响应:

技术分享

 

ThinkPHP 源码分析之常量 IS_AJAX

标签:

原文地址:http://www.cnblogs.com/dee0912/p/4756782.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!