AJAX 與 JSONP

AJAX Asynchronous JavaScript and XML

XMLHttpRequest 對象

屬性

readyState: 每當(dāng) readyState 改變時亏镰,就會觸發(fā) onreadystatechange 事件
存有 XMLHttpRequest 的狀態(tài)。從 0 到 4 發(fā)生變化饵筑。
0: 請求未初始化
1: 服務(wù)器連接已建立
2: 請求已接收
3: 請求處理中
4: 請求已完成,且響應(yīng)已就緒

responseText #服務(wù)器返回的響應(yīng)文本
responseXml #服務(wù)器返回的響應(yīng)xml
status #服務(wù)器的http狀態(tài)碼 200: "OK" 404: 未找到頁面
statusText #服務(wù)器的http狀態(tài)原因文本
onreadystatechange(){} #事件被觸發(fā) 5 次(0 - 4)卖哎,對應(yīng)著 readyState 的每個變化

request = new XMLHttpRequest(); // 新建XMLHttpRequest對象

request.onreadystatechange = function () { // 狀態(tài)發(fā)生變化時,函數(shù)被回調(diào)
    if (request.readyState === 4) { // 成功完成
        // 判斷響應(yīng)結(jié)果:
        if (request.status === 200) {
            // 成功籽前,通過responseText拿到響應(yīng)的文本:
           console.log(request.responseText);
        } else {
            // 失敗种冬,根據(jù)響應(yīng)碼判斷失敗原因:
            console.log(request.status);
        }
    } else {
        // HTTP請求還在繼續(xù)...
    }
}
function GetXmlHttpObject() {
  var xmlHttp=null;
  try {
    // Firefox, Opera 8.0+, Safari
    xmlHttp=new XMLHttpRequest();
   }
  catch (e) {
    // Internet Explorer
    try {
      xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
    }
    catch (e) {
      xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
      }
    }
  return xmlHttp;
}

var xmlHttp=GetXmlHttpObject();
// 發(fā)送請求:
request.open('GET', '/api/categories');
request.send();

JSONP JSON with Padding

JSONP,它有個限制粗井,只能用GET請求尔破,并且要求返回JavaScript。這種方式跨域?qū)嶋H上是利用了瀏覽器允許跨域引用JavaScript資源
JSONP通常以函數(shù)調(diào)用的形式返回浇衬,返回JavaScript內(nèi)容
先準(zhǔn)備好函數(shù)懒构,然后給頁面動態(tài)加一個<script>節(jié)點,相當(dāng)于動態(tài)讀取外域的JavaScript資源耘擂,最后就等著接收回調(diào)了
1.首先在客戶端注冊一個callback, 然后把callback的名字傳給服務(wù)器痴脾。
2.此時,服務(wù)器先生成 json 數(shù)據(jù)梳星。
3.然后以 javascript 語法的方式赞赖,生成一個function , function 名字就是傳遞上來的callback參數(shù)值 .
4.最后將 json 數(shù)據(jù)直接以入?yún)⒌姆绞剑胖玫?function 中冤灾,這樣就生成了一段 js 語法的文檔前域,返回給客戶端。
5.客戶端瀏覽器韵吨,解析script標(biāo)簽匿垄,并執(zhí)行返回的 javascript 文檔,此時數(shù)據(jù)作為參數(shù)归粉,傳入到了客戶端預(yù)先定義好的 callback 函數(shù)里.

https://www.liaoxuefeng.com/wiki/001434446689867b27157e896e74d51a89c25cc8b43bdb3000/001434499861493e7c35be5e0864769a2c06afb4754acc6000

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末椿疗,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子糠悼,更是在濱河造成了極大的恐慌届榄,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,602評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件倔喂,死亡現(xiàn)場離奇詭異铝条,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)席噩,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,442評論 2 382
  • 文/潘曉璐 我一進(jìn)店門班缰,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人悼枢,你說我怎么就攤上這事埠忘。” “怎么了?”我有些...
    開封第一講書人閱讀 152,878評論 0 344
  • 文/不壞的土叔 我叫張陵莹妒,是天一觀的道長假丧。 經(jīng)常有香客問我,道長动羽,這世上最難降的妖魔是什么包帚? 我笑而不...
    開封第一講書人閱讀 55,306評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮运吓,結(jié)果婚禮上渴邦,老公的妹妹穿的比我還像新娘。我一直安慰自己拘哨,他們只是感情好谋梭,可當(dāng)我...
    茶點故事閱讀 64,330評論 5 373
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著倦青,像睡著了一般瓮床。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上产镐,一...
    開封第一講書人閱讀 49,071評論 1 285
  • 那天隘庄,我揣著相機(jī)與錄音,去河邊找鬼癣亚。 笑死丑掺,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的述雾。 我是一名探鬼主播街州,決...
    沈念sama閱讀 38,382評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼玻孟!你這毒婦竟也來了唆缴?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,006評論 0 259
  • 序言:老撾萬榮一對情侶失蹤黍翎,失蹤者是張志新(化名)和其女友劉穎面徽,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體玩敏,經(jīng)...
    沈念sama閱讀 43,512評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡斗忌,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,965評論 2 325
  • 正文 我和宋清朗相戀三年质礼,在試婚紗的時候發(fā)現(xiàn)自己被綠了旺聚。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,094評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡眶蕉,死狀恐怖砰粹,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤碱璃,帶...
    沈念sama閱讀 33,732評論 4 323
  • 正文 年R本政府宣布弄痹,位于F島的核電站,受9級特大地震影響嵌器,放射性物質(zhì)發(fā)生泄漏肛真。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,283評論 3 307
  • 文/蒙蒙 一爽航、第九天 我趴在偏房一處隱蔽的房頂上張望蚓让。 院中可真熱鬧,春花似錦讥珍、人聲如沸历极。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,286評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽趟卸。三九已至,卻和暖如春氏义,著一層夾襖步出監(jiān)牢的瞬間锄列,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,512評論 1 262
  • 我被黑心中介騙來泰國打工惯悠, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留右蕊,地道東北人。 一個月前我還...
    沈念sama閱讀 45,536評論 2 354
  • 正文 我出身青樓吮螺,卻偏偏與公主長得像饶囚,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子鸠补,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,828評論 2 345

推薦閱讀更多精彩內(nèi)容