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”…….
基于以上的说明~~大家是否明白了呢?
呵呵~~不明白的也没关系~~因为您可以稍微动动您的手指,留下您的疑问吧~
转载自梦三秋
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。