首先看一下框架裏面是怎樣判斷的。
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;
}
}