1, 通過傳遞_GET參數的方法簡單實現網頁請求的判斷。
url上這麼傳遞:*******.php?ajax
php這麼判斷:
if(isset($_GET['ajax'])) {
...這是一個ajax請求,然後...
}
else {
...這不是一個ajax請求,然後...
}
這種實現方法很差勁,相當容易容易容易偽造。判斷和不判斷麼有任何區別。
所以又出來一種自認為很科學的處理方式,這種方式確實有一定的學習價值。
Php獲取系統變量中的xmlHttpRequest判讀。
首先你必須使用jquery,Js發送ajax請求,通過jquery發送的$.ajax, $.get, or $.post方法請求網頁內容時,它會向服務器傳遞一個HTTP_X_REQUESTED_WITH的參數,這個參數的值是xmlHttpRequest。
Js 代碼:
代碼如下 復制代碼beforeSend : function (XMLHttpRequest) {
XMLHttpRequest.setRequestHeader("X-Requested-With","XMLHttpRequest");
};
參數名X-Requested-With,參數值XMLHttpRequest,你可以任意定義。Php取得時候要在參數名前面加上大寫的http字樣
代碼如下 復制代碼
if(!emptyempty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest')
{
//If AJAX Request Then
}else{
//something else
}
1, 如果
你的jquery請求是通過iframe打開網頁的,那麼HTTP_X_REQUESTED_WITH參數不會被傳遞,也就是說你沒有辦法判斷請求的類型。
2, IE5,IE6老版本的浏覽器總中$.ajax, $.get, or $.post方法不會自動發送HTTP_X_REQUESTED_WITH的參數到頭部信息,因為php中也是無法獲取參數進行判斷。除非你自己構造XMLHttpRequest對象出來,然後再發送給php腳本,相當於用最原始的js實現ajax功能。這樣做,jquery框架本來封裝好的ajax就失去意義啦