PHP 判断是否为 AJAX 请求

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

  jQuery 发出 ajax 请求时,会在请求头部添加一个名为 X-Requested-With 的信息,信息内容为:XMLHttpRequest

  在后端可以使用 $_SERVER["HTTP_X_REQUESTED_WITH"] 来获取。(注意:中划线换成了下划线,不区分大小写)

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

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

在使用原生 JavaScript 发出 ajax 请求时,我们也可以给头部添加信息,以方便后端同学进行区分,方法如下:

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

这里我们也一样是给头部添加 X_REQUESTED_WITH 信息,与 jQuery 的一致。当然你也可以更改为别的信息来进行区分。

  OK,进行区分之后有什么好处呢?说两个例子:

  1.当 js 文件未加载完时,用户点击了某个按钮或链接,本应是 ajax 请求的成了 正常请求,后端根据判断,不输出 ajax 时的 json 数据,而是跳转,这也是优雅降级的形式。

  2. [A 页面]使用 ajax 方式进行登录,[B 页面]使用正常方式登录,如果不区分,后端需要写两次几乎完全相同的代码,而有了区分,可以把重复的代码消掉。

开启PHP的伪静态 http://www.cnblogs.com/sosoft/p/3549336.html

PHP 判断是否为 AJAX 请求,布布扣,bubuko.com

时间: 2024-10-27 07:01:33

PHP 判断是否为 AJAX 请求的相关文章

session失效,使用ajax请求数据被拦截,此时正常的处理逻辑是跳到登录界面,而不是界面没有变化(java判断是否是ajax请求)

在登录过滤器中,判断请求是ajax请求还是超链接或者地址栏变化的请求 if (httpServletReq.getHeader("x-requested-with") != null && httpServletReq.getHeader("x-requested-with").equalsIgnoreCase("XMLHttpRequest")) { JSONObject jsessiontimeout = new JSONOb

判断 是否是 AJAX请求

很多用到AJAX请求,如何区别一个请求是传统的HTTP请求?还是Ajax请求?网上有很多,这里记录一下,方便以后直接查看,懒人计划, 关键是看http请求头(header)信息中的 x-requested-with 信息项是否有无,如果无该头信息项,取出的是未定义的值,即null,则说明是传统请求:如果存在该头信息项,值是XMLHttpRequest 则说明是Ajax请求: 在JAVA WEB项目,比如在Server端的JSP中判断如下: if (request.getHeader("x-req

如何在Global.asax中判断是否是ajax请求

今天在一个应用场景中需要在Global.asax中判断一个请求是否是ajax请求,而在ASP.NET MVC中已经提供了一个现成的扩展方法IsAjaxRequest: namespace System.Web.Mvc { public static class AjaxRequestExtensions { public static bool IsAjaxRequest(this HttpRequestBase request); } } 但这个扩展方法只是针对HttpRequestBase,

通过http上下文判断是否是Ajax请求

using System; namespace System.Web.Mvc { /// <summary>Represents a class that extends the <see cref="T:System.Web.HttpRequestBase" /> class by adding the ability to determine whether an HTTP request is an AJAX request.</summary>

在服务器端判断request来自Ajax请求(异步)还是传统请求(同步)

两种请求在请求的Header不同,Ajax 异步请求比传统的同步请求多了一个头参数 1. 传统同步请求参数 accept text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 accept-charset gb2312,utf-8;q=0.7,*;q=0.7 accept-encoding gzip,deflate accept-language zh-cn,zh;q=0.5 cache-control max-age=0

js判断所有异步ajax请求调用完毕

$(function() { $(document).ajaxStop(function() { $(this).unbind("ajaxStop"); //prevent running again when other calls finish LoadContact(); }); LoadCategories($('#Category')); LoadPositions($('#Position')); LoadDepartments($('#Department')); });

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

先说前端使用 jQuery 时怎么区分: jQuery 发出 ajax 请求时,会在请求头部添加一个名为 X-Requested-With 的信息,信息内容为:XMLHttpRequest 在后端可以使用 $_SERVER["HTTP_X_REQUESTED_WITH"] 来获取.(注意:中划线换成了下划线,不区分大小写) 由此,我们可以这样来判断是否为 ajax 请求: // php 判断是否为 ajax 请求 <a href="http://www.cnblogs.

PHP判断ajax请求:HTTP_X_REQUESTED_WITH

PHP判断ajax请求的原理: 在发送ajax请求的时候,我们可以通过XMLHttpRequest这个对象,创建自定义的 header头信息, 在jquery框架中,对于通过它的$.ajax, $.get, or $.post方法请求网页内容时,它会向服务器传递一个HTTP_X_REQUESTED_WITH的参数,php中就是在header一层判断是否是 ajax请求,对应的根据$_SERVER['HTTP_X_REQUESTED_WITH']判断. /** * 当前请求是否ajax请求 * *

登录超时页面跳转和ajax请求时的问题!

今天闲来无事听见后端两个coder探讨如何判断请求是否是ajax请求(通过请求头判断是否是xmlhttprequest 和ie下那个布啦布啦的东西 )了解详情后是为了解决判断登陆超时ajax请求到的是登陆页面的html. 然后我给出了一个设计方式方最然我是一个前端)如下: 1,页面跳转的控制器和form提交的控制继承 基类A 然后 A 有做登陆超时的跳转的处理方法. 2,所有的接口也就是他们说的ajax请求的控制器继承基类B  B里面含有登陆超时时返回状态的功能前端在ajax请求的时候可以做状态