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請求
需要自己新增請求頭資訊,這樣才可以在後臺進行判斷
前臺新增請求頭的程式碼為: