PHP判斷一個請求是AJAX請求還是普通請求


首先說說原理:
在發送ajax請求的時候,我們可以通過XMLHttpRequest這個對象,創建自定義的header頭信息
如果您使用的是原生的ajax方法,也就是未使用jquery或者其他js框架包裝的ajax方法,那么代碼如下:

?
1
xmlHttpRequest.setRequestHeader( "request_type" , "ajax" );

哦~對了,您一定知道xmlHttpRequest這個對象是怎么創建的吧?額?您沒開玩笑吧?您不知道–那我勸您還是不要了解了,放心吧~您對他不了解也沒事,下面我來告訴你怎么在jquery中使用,那是更加的簡單啊~~

通過jquery的$.ajax()方法,可以輕松地在發送ajax請求之前,創建我們自定義的header頭信息。

?
1
2
3
4
5
6
7
8
9
10
11
12
$.ajax({
     type        : "GET" ,
     url     : base_url + 'php_check_ajax_request/get_user_list.html' ,
     beforeSend  : function (XMLHttpRequest) {
         XMLHttpRequest.setRequestHeader( "request_type" , "ajax" );
     },
     success     : function (data){
         $( "#user_list" ).html(data);
         $tip.hide();
         $button.attr( 'disabled' , true );
     }
});

上面的代碼,是我的demo中用到的代碼,有好幾行吧,您別怕,要您注意的就是一個地址,找到了beforeSend了吧?對了,就是那里了,XMLHttpRequest.setRequestHeader(“request_type”,”ajax”);這一句代碼就是向header頭信息里面創建了一個我們自定義的一個變量“request_type”。

恩~~說到這里,大家應該已經會在發送ajax請求前往header頭信息中加入自定的信息了吧。
接下來我來告訴大家如果在php中取得這個信息,也是相當簡單呀
如我之前定義的那個變量“request_type”,那么在php中就應該這樣取得

?
1
$_SERVER [ 'HTTP_REQUEST_TYPE' ]

看了上面的代碼之后,我想如此睿智的您一定已經發現規律了吧,對了,沒錯,就是將“request_type”這個變量全部大寫(一定要大寫),然后再加上一個“HTTP_”前綴,然后再$_SERVER這個超級變量中找就可以了。

?
1
2
3
if (isset( $_SERVER [ 'HTTP_REQUEST_TYPE' ]) && $_SERVER [ 'HTTP_REQUEST_TYPE' ] == "ajax" ){ //ajax提交
} else { //非ajax提交
}

上面的代碼就是在php程序中判斷請求到底是不是ajax請求了。

“request_type”這個變量是我們自定義的哦,如果您喜歡的話,您也可以將她換成你所喜歡的名字,比如“test”,“is_ajax”…….

基於以上的說明~~大家是否明白了呢?

呵呵~~不明白的也沒關系~~因為您可以稍微動動您的手指,留下您的疑問吧~

轉載自夢三秋


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM