亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

PHP判斷一個請求是Ajax請求還是普通請求

PHP判斷一個請求是Ajax請求還是普通請求

瀟湘沐 2018-12-31 00:00:27
PHP判斷一個請求是Ajax請求還是普通請求
查看完整描述

1 回答

?
湖上湖

TA貢獻2003條經驗 獲得超2個贊

先說前端使用 jQuery 時怎么區分:

  jQuery 發出 ajax 請求時,會在請求頭部添加一個名為 X-Requested-With 的信息,信息內容為:XMLHttpRequest

  在后端可以使用 $_SERVER["HTTP_X_REQUESTED_WITH"] 來獲取。(注意:中劃線換成了下劃線,不區分大小寫)

  由此,我們可以這樣來判斷是否為 ajax 請求:

1

2

3

4

5

6

// php 判斷是否為 ajax 請求  http://www.cnblogs.com/sosoft/

if(isset($_SERVER["HTTP_X_REQUESTED_WITH"]) && strtolower($_SERVER["HTTP_X_REQUESTED_WITH"])=="xmlhttprequest"){ 

    // ajax 請求的處理方式 

}else{ 

    // 正常請求的處理方式 

};

在使用原生 JavaScript 發出 ajax 請求時,我們也可以給頭部添加信息,以方便后端同學進行區分,方法如下:

1

2

3

4

var xmlhttp=new XMLHttpRequest(); 

xmlhttp.open("GET","test.php",true); 

xmlhttp.setRequestHeader("X-Requested-With","XMLHttpRequest"); 

xmlhttp.send();

這里我們也一樣是給頭部添加 X_REQUESTED_WITH 信息,與 jQuery 的一致。當然你也可以更改為別的信息來進行區分。

 

  OK,進行區分之后有什么好處呢?說兩個例子:

  1.當 js 文件未加載完時,用戶點擊了某個按鈕或鏈接,本應是 ajax 請求的成了 正常請求,后端根據判斷,不輸出 ajax 時的 json 數據,而是跳轉,這也是優雅降級的形式。

  2. [A 頁面]使用 ajax 方式進行登錄,[B 頁面]使用正常方式登錄,如果不區分,后端需要寫兩次幾乎完全相同的代碼,而有了區分,可以把重復的代碼消掉。


 


查看完整回答
反對 回復 2019-01-15
  • 1 回答
  • 0 關注
  • 500 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號