【先言】:当你是跨域时,tp内置的这个方法就完全鸡肋了(也就是说无用)
【场景】:
①:不跨域,自己增加请求头设置"X-Requested-With"这的值为 "XMLHttpRequest",至于怎么增加请求头自己去百度,网上一大堆,这里我就懒得写了,加了这个请求头之后就ok了
②:跨域,
当为跨域的时候,你是无法增加请求头的,即时你加也是徒劳无功,它不认了。原因是(ajax跨域只能指定jsonp格式的数据,这个就不是XMLHttpRequest对象了,所以此时在php中$_SERVER['HTTP_X_REQUESTED_WITH']是没有的)
【个人解决方案】:(注-只是简单解决,未必满足所有,当你发现下面的也满足不了的时候,自己打印$_SERVER看看,具体情况具体解决):
/**
* 当框架内部的isAjax不再适用时可使用此方法进行判断请求是否为ajax请求
* 框架内部isAjax失效原因:跨域时不再适用
* @return bool 返回真为ajax请求,否则就不是
*/
function isAjax(){
switch ($_SERVER['HTTP_ACCEPT']){
case 'application/json, text/javascript, */*':
// JSON 格式
return true;
break;
case 'application/json, text/plain, */*':
// JSON 格式
return true;
break;
case 'text/javascript, application/javascript, */*':
// javascript 或 JSONP 格式
return true;
break;
case 'text/html, */*':
// HTML 格式
return true;
break;
case 'application/xml, text/xml, */*':
// XML 格式
return true;
break;
default:
return false;
}
}
【php交流超级大群】:493965063
【php专业免费学习视频论坛】:php视频教程