java判断ajax请求,服务器端如何判断ajax请求方式

ajax是一类http请求,自然包含请求头,和请求体。

当服务器接收到ajax请求时,为了专门给ajax返回某一种特定形式(如json)的数据,就需要知道当前请求是否是ajax请求。

由于时间的关系,这里只给出php端判断请求的头的方式,至于java,python,C#而言,原理一样,请求标记name都是一致的,所以只需使用各自的api就可以实现。

function isAjax()

{

if(isset($_SERVER['HTTP_X_REQUESTED_WITH']))

{

if('xmlhttprequest'==strtolower($_SERVER['HTTP_X_REQUESTED_WITH']))

{

return true;

}

}

return false;

}

//就这么简单

?>

在PHP中,属性HTTP_X_REQUEST_WITH来自于底层封装,如果不想使用 $_SERVER来判断,可以使用php提供的 getAllHeaders()来获取

$headers = getallheaders();

//可以遍历一下

while (list($header, $value) = each($headers)) {

echo "$header: $value
\n";

}

//$headers是一个数组,也可以使用已知的key读取数据,来判断是否是ajax请求

if(isset($headers['x-request-with']) && $headers['x-request-with']=='xmlhttprequest')

{

echo 'yes';

}

?>

在java中也一样

//使用 servlet或者struts2,springmvc中的request访问

String  xhr =  request.getHeader('x-request-with');

if('xmlhttprequest'.equal(xhr)){

}

所以,在某些框架如ThinkPHP,直接将这个状态封装成常量

$isAjaxRequest =  isAjax();

defined('IS_AJAX') or define('IS_AJAX',$isAjaxRequest);

defined('IS_POST') or define('IS_POST',$_SERVER['REQUEST_METHOD']=='POST')

///......

if(IS_AJAX && IS_POST)

{

//....

}

?>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值