首先看一下框架里面是怎样判断的。
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;
}
}