好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

PHP判断ajax请求类型(HTTP_X_REQUESTED_WITH) - php高级应

PHP判断ajax请求类型(HTTP_X_REQUESTED_WITH)

在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 ;    } 

查看更多关于PHP判断ajax请求类型(HTTP_X_REQUESTED_WITH) - php高级应的详细内容...

  阅读:79次