有时我们需要判断是不是 ajax 请求来决定模块输出还是 json 格式输出.
PHP 判断 ajax 请求的原理:
在发送 ajax 请求的时候,我们可以通过 XMLHttpRequest 这个对象,创建自定义的 header 头信息, 在 jquery 框架中,对于通过它的 $.ajax, $.get, or $.post 方法请求网页内容时,它会向服务器传递一个 HTTP_X_REQUESTED_WITH 的参数,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
- $_SERVER [‘HTTP_X_REQUESTED_WITH’] 也可以自定义创建的,使用 XMLHttpRequest.setRequestHeader (name,value); 参考文章:http://www.skygq.com/2011/01/04/php-check-request-from-ajax-or-normal/