今天在M_Controller內(nèi)遇到如下代碼,故對(duì)如何判斷ajax請(qǐng)求,post請(qǐng)求及REQUEST_TIME于time()函數(shù)差別做了一下學(xué)習(xí)。
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內(nèi)判斷是否ajax請(qǐng)求的一種方法,官方文檔對(duì)于它的解釋是:檢查服務(wù)器頭中是否含有HTTP_X_REQUESTED_WITH
,如果有返回TRUE,否則返回FALSE。
當(dāng)然,這樣的判斷是不夠完善的,涉及到判斷的原理如下:
當(dāng)我們通過jquery發(fā)送ajax請(qǐng)求時(shí),會(huì)在請(qǐng)求頭部添加一個(gè)名為 X-Requested-With 的信息,信息默認(rèn)內(nèi)容為:XMLHttpRequest,這是CI框架對(duì)于ajax請(qǐng)求判斷的依據(jù)。
但是,當(dāng)我們用原生js時(shí)如何進(jìn)行判斷呢?
xmlHttpRequest.setRequestHeader("request_type","ajax");
根據(jù)XMLHttpRequest對(duì)象,手動(dòng)進(jìn)行頭部設(shè)置,如上設(shè)置完成后,我們可以再PHP邏輯代碼中如下獲?。?/p>
$_SERVER['HTTP_REQUEST_TYPE']
很明顯,我們?cè)陬^部設(shè)置的request_type
在后臺(tái)獲取時(shí),加上HTTP_的前置字符串,即可獲取到前臺(tái)發(fā)送的Header信息,即通過調(diào)用$_SERVER['HTTP_REQUEST_TYPE']
得到前臺(tái)傳值:ajax,當(dāng)然request_type也可以自行設(shè)置為別的字段。
以上內(nèi)容僅供參考!
推薦教程:PHP視頻教程