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就失去意義啦