PHP 判断 ajax 请求

先说前端使用 jQuery 时怎么区分:

jQuery 发出 ajax 请求时,

会在请求头部添加一个名为 X-Requested-With 的信息,

信息内容为:XMLHttpRequest,

在后端可以使用 $_SERVER["HTTP_X_REQUESTED_WITH"] 来获取.

由此,我们可以这样来判断是否为 ajax 请求:

// php 判断是否为 ajax 请求
if(isset($_SERVER["HTTP_X_REQUESTED_WITH"]) && strtolower($_SERVER["HTTP_X_REQUESTED_WITH"])=="xmlhttprequest"){
    // ajax 请求的处理方式
}else{
    // 正常请求的处理方式
};

在使用原生 JavaScript 发出 ajax 请求时,

我们也可以给头部添加信息 ,以方便后端进行区分,

方法如下:

var xmlhttp = new XMLHttpRequest();
xmlhttp.open("GET","test.php",true);
xmlhttp.setRequestHeader("X-Requested-With","XMLHttpRequest");
xmlhttp.send();

这里我们也一样是给头部添加 X_REQUESTED_WITH 信息,与 jQuery 的一致 .

进行区分之后好处

1.

当 js 文件未加载完时,

用户点击了某个按钮或链接,

本应是 ajax 请求的成了 正常请求,

后端根据判断,不输出 ajax 时的 json 数据,而是跳转,

这也是优雅降级的形式。

2.

A页面 使用 ajax 方式进行登录,

B页面 使用正常方式登录,如果不区分,

后端需要写两次几乎完全相同的代码,而有了区分,可以把重复的代码消掉。




导航