1. 程式人生 > >PHP判斷是否為AJAX請求

PHP判斷是否為AJAX請求

ajax請求常用的有兩種情況:一是jquery的ajax請求,一種是原生js的ajax請求

Jquery傳送的ajax請求

jquery會在請求頭加一個 X-Requested-With 資訊,資訊內容為XMLHttpRequest,這樣php可以使用$_SERVER這個全域性陣列來判別是否為ajax請求.

在jquery框架中,對於通過它的$.ajax, $.get, or $.post方法請求網頁內容時,它會向伺服器傳遞一個HTTP_X_REQUESTED_WITH的引數,你可以利用如下方法判斷某個請求是ajax請求還是普通請求: 

 

// php判斷是否為ajax請求
if (isset($_SERVER["HTTP_X_REQUESTED_WITH"] && strtolower($_SERVER["HTTP_X_REQUESTED_WITH"] == 'xmlhttprequest')){
    // 是ajax請求
} else {
    // 不是ajax請求
}
 

TP裡面了一個判斷是ajax請求的常量IS_AJAX 

在ThinkPHP(3.2.2)中在ThinkPHP/Library/Think/APP.class.php(Line:49)

define('IS_AJAX', ((isset($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') || !emtpty($_POST(C('VAR_AJAX_SUBMIT')] || !empty($_GET[C('VAR_AJAX_SUBMIT')])) ? true : false);
可見ThinkPHP就是利用這種原理或者自己在表單中提交的

原生js發起的ajax請求

需要自己新增請求頭資訊,這樣才可以在後臺進行判斷 
前臺新增請求頭的程式碼為: