ThinkPHP 源码分析之常量 IS_AJAX
2015-08-25 10:37
603 查看
在控制器中判断请求是否是通过 AJAX 提交,ThinkPHP(3.2.2)中在 ThinkPHP/Library/Think/App.class.php (Line:49) 中定义了常量 IS_AJAX:
通过检测 $_SERVER['HTTP_X_REQUESTED_WITH'] 的值是否是 XMLHttpRequest来判断,或者通过检测是否存在通过 POST 或者 GET 传递的 C('VAR_AJAX_SUBMIT') 的值来判断,该值是写在配置文件 ThinkPHP/Conf/convention.php(Line:159) 中:
控制器(如果不是通过 AJAX 提交,则报错):
可以测试通过 AJAX 发送请求时,服务器端 $_SERVER['HTTP_X_REQUESTED_WITH'] 的值(控制器):
在浏览器中通过观察 HTTP 响应:
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 响应:
相关文章推荐
- php final关键字
- php 常用函数
- php后门隐藏技巧
- 使用PHP_UML生成代码的UML图
- php可变参数实现
- thinkphp获取mysql错误
- laravel启动过程简单解析
- phpstorm快捷键
- php - php内置MySQL函数
- php给图片打水印
- 自制FFmpeg SDK并使用output_example测试
- php相对路径的写法
- PHP用iframe实现文件异步上传(无刷新)
- php大力力 [014节] 八杆子打不着的非技术文章,哈哈
- 阅读laravel源代码有感
- laravel sendmail
- php动态调用函数方法&&非关系数据库的优势
- php动态调用函数方法&&非关系数据库的优势
- ThinkPHP使用入门实例
- phpstorm通过ftp远程开发服务器上的项目