今天在M_Controller內遇到如下程式碼,故對如何判斷ajax請求,post請求及REQUEST_TIME於time()函數差別做了一下學習。
define('IS_AJAX', $this->input->is_ajax_request()); define('IS_POST', $_SERVER['REQUEST_METHOD'] == 'POST' && count($_POST) ? TRUE : FALSE); define('SYS_TIME', $_SERVER['REQUEST_TIME'] ? $_SERVER['REQUEST_TIME'] : time());
is_ajax_request()
方法是CI內判斷是否ajax請求的一種方法,官方文件對於它的解釋是:檢查伺服器頭中是否含有HTTP_X_REQUESTED_WITH
,如果有回傳TRUE,否則回傳FALSE。
當然,這樣的判斷是不夠完善的,涉及到判斷的原理如下:
#當我們透過jquery發送ajax請求時,會在請求頭部加上一個名為X-Requested-With 的訊息,訊息預設內容為:XMLHttpRequest,這是CI框架對於ajax請求判斷的依據。
但是,當我們用原生js時如何進行判斷呢?
xmlHttpRequest.setRequestHeader("request_type","ajax");
根據XMLHttpRequest對象,手動進行頭部設置,如上設置完成後,我們可以再PHP邏輯代碼中如下獲取:
$_SERVER['HTTP_REQUEST_TYPE']
很明顯,我們在頭部設置的request_type
在背景取得時,加上HTTP_的前置字串,即可取得到前台發送的Header訊息,即透過呼叫$_SERVER['HTTP_REQUEST_TYPE']
得到前台傳值:ajax,當然request_type也可以自行設定為別的欄位。
以上內容僅供參考!
推薦教學:PHP影片教學
#以上是php如何判斷是ajax的詳細內容。更多資訊請關注PHP中文網其他相關文章!