Finecms ajax请求判断

FineCMS学习第二节:M_Controller学习:

今天在M_Controller内遇到如下代码,故对如何判断ajax请求,post请求及REQUEST_TIME于time()函数差别做了一下学习,再次记录给大家参考

define(‘IS_AJAX’, $this->input->is_ajax_request());
define(‘IS_POST’, $_SERVER[‘REQUEST_METHOD’] == ‘POST’ && count($_POST) ? TRUE : FALSE);
define(‘SYS_TIME’, $_SERVER[‘REQUEST_TIME’] ? $_SERVER[‘REQUEST_TIME’] : time());
is_ajax_request()方法是CI内判断是否ajax请求的一种方法,官方文档对于它的解释是:检查服务器头中是否含有 HTTP_X_REQUESTED_WITH ,如果有返回 TRUE ,否则返回 FALSE 。

当然,这样的判断是不够完善的,涉及到判断的原理如下:

当我们通过jquery发送ajax请求时,会在请求头部添加一个名为 X-Requested-With 的信息,信息默认内容为:XMLHttpRequest,这是CI框架对于ajax请求判断的依据,但是,当我们用原生js时如何进行判断呢?

xmlHttpRequest.setRequestHeader(“request_type”,”ajax”);
根据XMLHttpRequest对象,手动进行头部设置,如上设置完成后,我们可以再PHP逻辑代码中如下获取:

$_SERVER[‘HTTP_REQUEST_TYPE’]
很明显,我们在头部设置的request_type在后台获取时,加上HTTP_的前置字符串,即可获取到前台发送的Header信息,即通过调用$_SERVER[‘HTTP_REQUEST_TYPE’]得到前台传值:ajax,当然request_type也可以自行设置为别的字段。

在学习中,发现跨域请求时,这种方法是不能使用的,后续学习后再行补充!

===========================================分割线==================================

POST与GET请求判断:

搜索了一圈,简单对此有了解,决定现在次标注一下,学习完《图解HTTP》以后再进行详细解析

===========================================分割线==================================

$_SERVER[“REQUEST_TIME”]与time()同样是返回自从 Unix 纪元(格林威治时间 1970 年 1 月 1 日 00:00:00)到当前时间的秒数

其中$_SERVER[“REQUEST_TIME”]从PHP 5.1.0有效

其中$_SERVER[“REQUEST_TIME”]记录了请求的发送时间,而time()是记录运行至此句代码时的当前时间

thedarkside

这是一个最好的时代,这是一个最坏的时代。

stay connected

228,480

Fans

21,563

Followers

20,563

Followers

8,125

Subscribers

2,253

Subscribers

10,563

Followers

最新文章

entertainment
Buckingham Palace soil used in Tate exhibit
Oct 13, 2016
Sports
Legendary coach Steve Spurrier was truly
Oct 13, 2016
Technology
Acer reveals all-in-one Windows 10 PC
Oct 13, 2016
entertainment
Revival allows Selena Gomez to shed
Oct 13, 2016
entertainment
Buckingham Palace soil used in Tate exhibit
Oct 13, 2016
Sports
Legendary coach Steve Spurrier was truly
Oct 13, 2016
Technology
Acer reveals all-in-one Windows 10 PC
Oct 13, 2016
entertainment
Revival allows Selena Gomez to shed
Oct 13, 2016