易怀源

导航

PHP判断请求是否是ajax请求

首先看一下框架里面是怎样判断的
ThinkPHP

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);
其中C('VAR_AJAX_SUBMIT')默认是'ajax'即通过变量判断

Laravel
public function ajax()
{
return $this->isXmlHttpRequest();
}
public function isXmlHttpRequest()
{
return 'XMLHttpRequest' == $this->headers->get('X-Requested-With');
}
其中$this->headers->get()是获取HTTP请求头部信息

我们自己的方法
因为变量是可以定义的所以并不推荐使用变量字段判断是否是ajax请求
根据ajax 会自动在请求的header里面加上一个 x-request-with所以我们可以通过获取头信息判断
那么判断是否来自ajax请求可以通过方法
public function isAjax(){
if(isset($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest'){
return true;
}else{
return false;
}
}

posted on 2016-09-27 10:25  易怀源  阅读(816)  评论(0编辑  收藏  举报