jQuery AJAX 304狀態(tài)碼簡(jiǎn)述:
AJAX是通過XMLHttpRequest對(duì)象請(qǐng)求后臺(tái)接口獲取數(shù)據(jù),如果是要獲取的頁(yè)面數(shù)據(jù)與先前請(qǐng)求到的數(shù)據(jù)完全一致(比如重復(fù)請(qǐng)求,或者緩存中已有該數(shù)據(jù)),服務(wù)器返回304狀態(tài)碼,代表資源未改變,并且不返回任何數(shù)據(jù),瀏覽器直接取用本地緩存數(shù)據(jù)。這個(gè)狀態(tài)碼僅僅代表本次請(qǐng)求的數(shù)據(jù)跟上一次請(qǐng)求的數(shù)據(jù)是相同的,而不代表請(qǐng)求失敗。
jQuery.ajax({ type: "GET", url: "/your/api", cache: true, success: function(data){ // Handle success here }, error: function(xhr){ if(xhr.status==304){ alert("Not Modified"); } // Handle error here } });
需要注意的是,對(duì)于HTTP GET請(qǐng)求,如果請(qǐng)求返回200狀態(tài)碼,那么瀏覽器會(huì)把結(jié)果緩存起來,下次請(qǐng)求同樣的URL會(huì)優(yōu)先返回本地緩存的結(jié)果,除非你顯式告訴jQuery不要緩存這個(gè)請(qǐng)求,可以通過設(shè)置cache:false來達(dá)成此目的。同時(shí),建議使用"head"請(qǐng)求,這種請(qǐng)求只獲取頭部信息,通俗地講,就是: "Hi, server, 我們是不是認(rèn)識(shí)?"。