PHP判定ajax请求类型(HTTP_X_REQUESTED_WITH)
发布时间:2023-06-15 14:28:39 所属栏目:PHP教程 来源:
导读:在jquery中的ajax请求方法有很多,可是$.ajax, $.get, or $.post,并且他可以是json,html,txt等格式,这样我们需要在php根据ajax发送过来的HTTP_X_REQUESTED_WITH是否为ajax请求,然后再根据$_SERVER[/'HTTP_ACCEPT/
在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; } (编辑:汽车网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐