日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 前端技术 > HTML >内容正文

HTML

浏览器中xhr选项是做什么用的呢_XHR和AJAX终于搞懂了!!

發(fā)布時(shí)間:2025/3/20 HTML 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 浏览器中xhr选项是做什么用的呢_XHR和AJAX终于搞懂了!! 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

XMLHttpRequest分析

之前分析面試常被問的跨域問題,另一個(gè)面試難題就是ajax原理相關(guān)的問題了,今天我們就來solve它。

開篇先來介紹一個(gè)之前看過的一篇文章,講的是如何回答面試中的原理題,我們也可以把以下的這種方法運(yùn)用到學(xué)習(xí)前端知識(shí)上面。如果是英文詞匯就先翻譯成中文

一句話描述該技術(shù)的用途

描述該技術(shù)的核心概念或運(yùn)作流程

口述該技術(shù)的代碼書寫思路

該技術(shù)的優(yōu)點(diǎn)

該技術(shù)的缺點(diǎn)

如何彌補(bǔ)缺點(diǎn)

現(xiàn)在我們正式開始了解XMLHTTPRequest對(duì)象,顧名思義:是基于XML的HTTP請(qǐng)求。XMLHttpRequest是一個(gè)瀏覽器接口,使得Javascript可以進(jìn)行HTTP(S)通信。自從瀏覽器提供有了XMLHTTPRequest這個(gè)接口之后,ajax操作就此誕生。

我們?cè)賮碚f說什么是AJAX,AJAX = Asynchronous JavaScript and XML,翻譯為:異步的 JavaScript 和 XML。ajax就是基于瀏覽器提供的XMLHttpRequest對(duì)象來實(shí)現(xiàn)的。這下明白他們的關(guān)系了吧。

傳統(tǒng)的網(wǎng)頁(不使用 AJAX)如果需要更新內(nèi)容,必需重載整個(gè)網(wǎng)頁面。自從有了ajax之后,我們就可以實(shí)現(xiàn)異步的加載網(wǎng)頁。

什么叫異步?

異步,異嘛,不同的意思,這里也就是指不跟瀏覽器加載執(zhí)行網(wǎng)頁代碼的步伐一致,也就是說在一個(gè)網(wǎng)頁中需要用戶操作來觸發(fā)執(zhí)行代碼,而不是整個(gè)網(wǎng)頁代碼一次性執(zhí)行完畢。(這里的用戶操作是指在同一個(gè)網(wǎng)頁下面請(qǐng)求代碼執(zhí)行渲染,而不是讓瀏覽器直接跳轉(zhuǎn)渲染另一個(gè)頁面)

AJAX 工作原理:

這里面都提到了一個(gè)概念XML,那什么是XML呢?

XML 指可擴(kuò)展標(biāo)記語言(eXtensible Markup Language)。

我們?cè)跒g覽器中使用XMLHTTPRequest對(duì)象在服務(wù)器之間通信,傳輸?shù)臄?shù)據(jù)是使用XML的方式,但最終還是會(huì)被轉(zhuǎn)換成json數(shù)據(jù)格式來被我們使用。

我們?cè)賮砜纯碭HR的使用流程:首先我們需要新建一個(gè)XMLHttpRequest實(shí)例

var xhr = new XMLHttpRequest();然后,向遠(yuǎn)程主機(jī)發(fā)出一個(gè)HTTP請(qǐng)求

xhr.open('GET', 'example.php');

xhr.send();接著,就等待遠(yuǎn)程主機(jī)做出回應(yīng)。這時(shí)需要監(jiān)控XMLHttpRequest對(duì)象的狀態(tài)變化,指定回調(diào)函數(shù)

xhr.onreadystatechange = function(){

if ( xhr.readyState == 4 && xhr.status == 200 ) {

alert( xhr.responseText );

} else {

alert( xhr.statusText );

}

};上面的代碼包含了老版本XMLHttpRequest對(duì)象的主要屬性:

* xhr.readyState:XMLHttpRequest對(duì)象的狀態(tài),等于4表示數(shù)據(jù)已經(jīng)接收完畢。

* xhr.status:服務(wù)器返回的狀態(tài)碼,等于200表示一切正常。

* xhr.responseText:服務(wù)器返回的文本數(shù)據(jù)

* xhr.responseXML:服務(wù)器返回的XML格式的數(shù)據(jù)

* xhr.statusText:服務(wù)器返回的狀態(tài)文本。

老版本的XMLHttpRequest對(duì)象有以下幾個(gè)缺點(diǎn):* 只支持文本數(shù)據(jù)的傳送,無法用來讀取和上傳二進(jìn)制文件。

* 傳送和接收數(shù)據(jù)時(shí),沒有進(jìn)度信息,只能提示有沒有完成。

* 受到"同域限制"(Same Origin Policy),只能向同一域名的服務(wù)器請(qǐng)求數(shù)據(jù)。

以上都是2010年以前使用的出來的過時(shí)的XMLHttpRequest對(duì)象了,現(xiàn)在我們都基本上使用的是HTML5中的新版本XMLHttpRequest對(duì)象。

新版本的功能:

新版本的XMLHttpRequest對(duì)象,針對(duì)老版本的缺點(diǎn),做出了大幅改進(jìn)。* 可以設(shè)置HTTP請(qǐng)求的時(shí)限。

* 可以使用FormData對(duì)象管理表單數(shù)據(jù)。

* 可以上傳文件。

* 可以請(qǐng)求不同域名下的數(shù)據(jù)(跨域請(qǐng)求),CORS。

* 可以獲取服務(wù)器端的二進(jìn)制數(shù)據(jù)。

* 可以獲得數(shù)據(jù)傳輸?shù)倪M(jìn)度信息。

1】HTTP請(qǐng)求的時(shí)限

xhr.timeout = 3000;

xhr.ontimeout = function(event){

alert('請(qǐng)求超時(shí)!');

}

上面的語句,將最長等待時(shí)間設(shè)為3000毫秒。過了這個(gè)時(shí)限,就自動(dòng)停止HTTP請(qǐng)求。與之配套的還有一個(gè)timeout事件,用來指定回調(diào)函數(shù)。

2】FormData對(duì)象

ajax操作往往用來傳遞表單數(shù)據(jù)。為了方便表單處理,HTML 5新增了一個(gè)FormData對(duì)象,可以模擬表單。

//首先,新建一個(gè)FormData對(duì)象。var formData = new FormData();

//然后,為它添加表單項(xiàng)。formData.append('username', '張三');

formData.append('id', 123456);

//最后,直接傳送這個(gè)FormData對(duì)象。這與提交網(wǎng)頁表單的效果,完全一樣。xhr.send(formData);

FormData對(duì)象也可以用來獲取網(wǎng)頁表單的值:

var form = document.getElementById('myform');

var formData = new FormData(form);

formData.append('secret', '123456'); // 添加一個(gè)表單項(xiàng)xhr.open('POST', form.action);

xhr.send(formData);

3】上傳文件

新版XMLHttpRequest對(duì)象,不僅可以發(fā)送文本信息,還可以上傳文件。

假定files是一個(gè)"選擇文件"的表單元素(input[type="file"]),我們將它裝入FormData對(duì)象。

var formData = new FormData();

for (var i = 0; i < files.length;i++) {

formData.append('files[]', files[i]);

}

xhr.send(formData);

4】跨域資源共享(CORS)

新版本的XMLHttpRequest對(duì)象,可以向不同域名的服務(wù)器發(fā)出HTTP請(qǐng)求。這叫做"跨域資源共享"(Cross-origin resource sharing,簡稱CORS)。

使用"跨域資源共享"的前提,是瀏覽器必須支持這個(gè)功能,而且服務(wù)器端必須同意這種"跨域"。如果能夠滿足上面的條件,則代碼的寫法與不跨域的請(qǐng)求完全一樣。

跨域之前我們都講過了,這里就不多提了,其他的新XMLHttpRequest對(duì)象的功能,個(gè)人覺得日常開發(fā)中可能遇到很少,就不去總結(jié)了。

總結(jié)

以上是生活随笔為你收集整理的浏览器中xhr选项是做什么用的呢_XHR和AJAX终于搞懂了!!的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 2018中文字幕在线观看 | 蜜臀人妻四季av一区二区不卡 | 本道久久 | 99热| 久久免费网 | 国产电影一区在线观看 | 9i看片成人免费看片 | 热热热色 | 麻豆视频观看 | 亚洲一二三区在线观看 | 桃色在线视频 | 亚洲色图欧洲色图 | 亚洲色图综合网 | 亚洲高清在线观看 | 成人h视频在线观看 | 亚洲精品一线 | 日日夜夜狠狠爱 | 亚洲乱码国产乱码精品 | 四虎永久免费地址 | 在线精品一区二区三区 | 午夜精品一区二区在线观看 | 99re在线视频观看 | 精品视频在线观看免费 | 麻豆免费在线观看 | 国产18在线观看 | 日本嫩草影院 | 人人草在线 | 日本精品在线视频 | 97超碰精品 | 69人妻精品久久无人专区 | 成人精品视频99在线观看免费 | 久草中文在线 | 久久精品无码av | 亚洲人成电影一区二区在线 | 人妻少妇精品一区二区 | 亚洲精品在线视频 | 亚洲拍拍视频 | 日日操夜夜摸 | 日韩欧美国产视频 | a级片在线免费看 | 884aa四虎影成人精品一区 | 一区二区精| 亚洲一区二区小说 | 中文一区二区在线观看 | 国产又爽又黄又嫩又猛又粗 | 精品人妻一区二区三区日产乱码卜 | 性的免费视频 | 男女视频在线免费观看 | xxxxav| 久久精品久久久精品美女 | 亚洲国产精品成人无码区 | 亚洲一区二区三区观看 | 中文字幕久久av | 五月av在线 | 东京热av一区 | 欧美久久久久久久久久 | 91精品国产麻豆国产自产在线 | 欧美在线视频免费播放 | 欧美wwwwww | 一区二区三区久久久久 | 国产激情四射 | 九九午夜 | 日韩字幕在线 | 图片区亚洲色图 | 亚洲xx在线 | 国产又黄又粗又猛又爽的视频 | 色婷婷亚洲一区二区三区 | 国产成人精品一区二区三区免费 | 在线视频第一页 | 黄色国产视频 | 日本泡妞xxxx免费视频软件 | 国产大奶| h片在线播放 | 欧美国产日韩一区二区 | 日本涩涩网 | 成人精品久久久午夜福利 | 国产特级aaaaaa大片 | 亚洲精品久久久久久久久久吃药 | 人人超碰在线 | 久久蜜桃av| 久久黄色一级片 | 香蕉视频官方网站 | 国产在线视频资源 | 成人爽a毛片一区二区免费 日本高清免费看 | 国产一区二区三区播放 | 免费成人黄| 91视频大全| 尤物自拍 | 日韩中文字幕免费视频 | 国产午夜成人久久无码一区二区 | 欧美a视频 | 播金莲一级淫片aaaaaaa | 在线观看黄色网页 | 国产精品无码成人片 | 奇米网7777 | 欧美日韩一区二区在线播放 | 亚洲第一页夜 | 久久亚洲精精品中文字幕早川悠里 | 成人精品久久久 |