php 判断ajax

文章来源http://www.cnblogs.com/sosoft/p/3793425.html

先说前端使用 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

时间: 2024-08-29 03:34:00

php 判断ajax的相关文章

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请求 * *

10. 判断ajax加载完成(jq Deferred对象的使用)

js代码如下: function loadDate() { var dtd = $.Deferred(); $.ajax({ type: "POST", url: args.url, async: true, dataType: "json", data: args.data, success: function(res){ dtd.resolve(); } }); return dtd.promise(); } $.when(loadDate()) .done(f

php后台判断ajax请求

if (isset($_SERVER["HTTP_X_REQUESTED_WITH"]) && $_SERVER["HTTP_X_REQUESTED_WITH"] === "XMLHttpRequest") { }

php ajax请求判断

2017小端午假期刚过,新的一轮工作又开始了,But,上三天又休息了,激动ing^^ FineCMS学习第二节:M_Controller学习: 今天在M_Controller内遇到如下代码,故对如何判断ajax请求,post请求及REQUEST_TIME于time()函数差别做了一下学习,再次记录给大家参考 define('IS_AJAX', $this->input->is_ajax_request()); define('IS_POST', $_SERVER['REQUEST_METHOD

Selenium测试Ajax程序(转)

上周末参加了Qclub的百度技术沙龙,听了百度的孙景卫讲了Web自动化测试,讲的非常好,然后在小组讨论时又有幸座在了一起.我们讨论的一个内容,就是Ajax应用程序比原来的非Ajax程序更不易测试,这里有两个主要原因. 第一:Ajax使得基于纯录制的方式无法工作,因为录制一个操作,这次返回需要5秒钟,下次会更多或更少. 第二:一些测试工具是基于原来非Ajax程序来开发的,后面没做对应的升级. 但是,同样有很多工具支持Ajax的测试,今天我们就来看一下大名鼎鼎的Selenium如何测试Ajax程序.

Django学习系列之Form表单和ajax

ajax 通过ajax发送一条数据 定义urls.py from django.conf.urls import url from django.contrib import admin from cmdb import views urlpatterns = [ url(r'^ajax_demo/', views.ajax_demo), ] 定义views.py from django.shortcuts import render from django.shortcuts import H

JavaWeb之Ajax快速入门(十九)

AJAX 1. AJAX简介 1. AJax是什么 允许浏览器与服务器通信而无须刷新当前页面的技术都被叫做AJax,AJax不是新的编程语言是多种技术的结合形成一门新技术 AJAX = DHTML (HTML.CSS.JavaScript ) + XMLHttpRequest对象 2. AJax的特点 不适用于任何应用场景 导致逻辑处理混乱 Ajax是实现B\S模式下的异步交互 在实现同样的功能时,Ajax的性能更好 3. AJax的优点 1). 传统web交互模型,浏览器直接将请求发送给服务器

使用AJAX实现分页

Fenye.html <!DOCTYPE html> <html> <head> <title>分页</title> </head> <script type="text/javascript"> /** * AJAX * 1.创建ajax对象 * 2.建立连接 * 3.判断ajax准备状态及状态码 * 4.发送请求 */ function showList(pageNow){ //创建ajax对象 v

关于ajax中return false无效的问题

onSubmit="return checkForm();" 方法中: 在ajax里直接写return false,是无效的. 因为它返回的是ajax中的success方法,而不是checkForm(). 因此可以设置一个全局变量用来做判断,实现停止的效果. 注意:ajax一定要是同步的. -------------------------------------------form表单代码---------------------------------------- <for