【先言】:當你是跨域時,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視頻教程