PHP判断ajax请求类型(HTTP_X_REQUESTED_WITH)
发布:smiling 来源: PHP粉丝网 添加日期:2014-07-17 11:08:32 浏览: 评论:0
在jquery中的ajax请求方法有很多,可是$.ajax, $.get, or $.post,并且他可以是json,html,txt等格式,这样我们需要在php根据ajax发送过来的HTTP_X_REQUESTED_WITH是否为ajax请求,然后再根据$_SERVER[\'HTTP_ACCEPT\']检判断是那格式的请求.
php中就是在header一层判断是否是ajax请求,对应的根据$_SERVER['HTTP_X_REQUESTED_WITH']判断,代码如下:
- /**
- * 当前请求是否ajax请求
- *
- * @access public
- * @return bool
- */
- function isAjax()
- {
- return isset($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'XMLHttpRequest';
- }
一般情况下$_SERVER['HTTP_X_REQUESTED_WITH']默认是XMLHttpRequest.
ajax跨域只能指定jsonp格式的数据,这个是就不是XMLHttpRequest对象了,就算你自定义一个$_SERVER['HTTP_X_REQUESTED_WITH']也是没有意义的.
解决的办法:
针对跨域情况的getjson 或者ajax(jsonp)可以使用ACCEPT请求头部格式来判断
PHP端对应$_SERVER['HTTP_ACCEPT']
jsonp的请求一般是:text/javascript, application/javascript, */*
json的请求:application/json, text/javascript, */*
一个简单的判断跨域条件下的ajax请求,代码如下:
- switch ($_SERVER['HTTP_ACCEPT']){
- case 'application/json, text/javascript, */*':
- // JSON 格式
- break;
- case 'text/javascript, application/javascript, */*':
- // javascript 或 JSONP 格式
- break;
- case 'text/html, */*':
- // HTML 格式
- break;
- case 'application/xml, text/xml, */*':
- // XML 格式
- break;
- }
Tags: ajax请求类型 REQUESTED
推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
- PHP新手上路(一)(7)
- 惹恼程序员的十件事(5)
- PHP邮件发送例子,已测试成功(5)
- 致初学者:PHP比ASP优秀的七个理由(4)
- PHP会被淘汰吗?(4)
- PHP新手上路(四)(4)
- 如何去学习PHP?(2)
- 简单入门级php分页代码(2)
- php中邮箱email 电话等格式的验证(2)