PHP判断一个请求是AJAX请求还是普通请求

2019-12-25 13:12:00
admin
原创 403

首先说说原理:
在发送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中就应该这样取得

<div id="highlighter_949359" class="syntaxhighlighter notranslate php" style="padding: 0px; width: 669px; margin: 1em 0px !important; position: relative !important; ove