最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

深入理解JavaScript中Ajax

 更新時間:2016年08月02日 15:39:56   作者:蕭蕭弈寒  
Ajax不是一種新的編程語言,而是使用現(xiàn)有標準的新方法。本文重點給大家介紹javascript中ajax知識,非常不錯,感興趣的朋友參考下

Ajax不是一種新的編程語言,而是使用現(xiàn)有標準的新方法。AJAX可以在不重新加載整個頁面的情況下,與服務器交換數(shù)據(jù)。這種異步交互的方式,使用戶單擊后,不必刷新頁面也能獲取新數(shù)據(jù)。

XMLHttpRequest對象

Ajax的核心是XMLHttpRequest對象(XHR)。XHR為向服務器發(fā)送請求和解析服務器響應提供了接口。能夠以異步方式從服務器獲取新數(shù)據(jù)。

在瀏覽器中創(chuàng)建對象(只支持IE7及更高的版本):

var xhr = new XMLHttpRequest(); 

XHR的用法

首先要介紹的是open()方法。它接收3個參數(shù):

•要發(fā)送的請求的類型(POST、GET等)

•請求的URL

•表示是否異步發(fā)送請求的布爾值

調用open()示例:

xhr.open("get", "index.jsp", false);
針對index.jsp的GET請求。URL相對于執(zhí)行代碼的當前頁面;調用open()方法并不會真正發(fā)送請求,只是啟動一個請求以備發(fā)送。

調用send()發(fā)送請求:

xhr.send(null);

send()接收一個參數(shù),即要作為請求主體發(fā)送的數(shù)據(jù)。如果不需要通過請求主體發(fā)送數(shù)據(jù),則必須傳入null。

相應數(shù)據(jù)會填充到XHR對象的相關屬性:

•responseText:作為響應主體被返回的文本

•responseXML:作為響應的內容類型是“text/xml”或“application/xml”

•status:響應的HTTP狀態(tài)

•statusText:HTTP狀態(tài)的說明

在接收響應后,首先檢查status屬性,確定響應已經(jīng)返回,一般200作為成功的標志。狀態(tài)碼304表示資源沒有修改,可以直接使用瀏覽器中緩存的版本。

為了接收到合適的響應,應該以如下方式檢測兩種狀態(tài)碼:

xhr.open("get", "index.jsp", false);
xhr.send(null);
if ((xhr.status >= 200 && xhr.status < 300) || xhr.status == 304) {
alert(xhr.responseText);
} else {
alert("Request was unsuccessful: " + xhr.status);
}

通過檢測readyState屬性,可以確定請求/響應過程的當前活動階段。

•0:未初始化。未調用open()方法

•1:啟動。已經(jīng)調用open()方法,未調用send()方法

•2:發(fā)送。已經(jīng)調用send()方法,未接收到響應

•3:接收。已經(jīng)接收到部分數(shù)據(jù)

•4:完成。已經(jīng)接收到全部數(shù)據(jù),可以在客戶端使用

readyState屬性的值發(fā)生變化時,都會觸發(fā)一次readystatechange事件。在調用open()之前指定onreadystatechange事件處理程序才能確保瀏覽器兼容性。

var xhr = new XMLHttpRequest();
xhr.onreadystatechange = function () {
if (xhr.readyState == 4) {
if ((xhr.status >= 200 && xhr.status < 300) || xhr.status == 304) {
alert(xhr.responseText);
} else {
alert("請求成功:" + xhr.status);
}
}
};
xhr.open("get", "index.jsp", true);
xhr.send(null);

在接收響應之前,可以取消異步請求:

xhr.abort();

HTTP頭部信息

XHR對象提供了操作請求頭部和響應頭部信息的方法。

默認情況下,在發(fā)送XHR請求的同時,還會發(fā)送下列頭部信息。

•Accept:瀏覽器能夠處理的內容類型

•Accept-Charset:瀏覽器能夠顯示的字符集

•Accept-Encoding:瀏覽器能夠處理的壓縮編碼

•Accept-Language:瀏覽器當前設置的語言

•Connection:瀏覽器與服務器之間連接的類型

•Cookie:當前頁面設置的任何Cookie

•Host:發(fā)出請求的頁面所在的域

•Referer:發(fā)出請求的頁面的URL

•User-Aent:瀏覽器的用戶代理字符串

使用setRequestHeader()可以設置自定義的請求頭部信息。必須在調用open()方法之后,且在調用send()之前,調用

setRequestHeader():

xhr.open("get", "index.jsp", true);
xhr.setRequestHeader("MyHeader", "MyValue");
xhr.send(null); 

調用getResponseHeader()并傳入字段名稱,可以取得相應的響應頭部信息。getAllResponseHeader()取得包含所有頭部信息的長字符串。

var myHeader = xhr.getResponseHeader("MyHeader");
var allHeaders = xhr.getAllResponseHeader();

GET請求

GET用于向服務器查詢某些信息??梢詫⒉樵冏址畢?shù)追加到URL的末尾,查詢字符串中的每個參數(shù)的名稱和值都必須使用encodeURIComponent()編碼:

xhr.open("get", "login.jsp?name1=value1&name2=value2", false); 
addURLParam()接收三個參數(shù):要添加參數(shù)的URL、參數(shù)的名稱和參數(shù)的值。
var url = "login.jsp";
// 添加參數(shù)
url = addURLParam(url, "username", "xxyh");
url = addURLParam(url, "password", "xxyh123");
// 初始化請求
xhr.open("get", url, false);

POST請求

POST請求用于向服務器發(fā)送應該被保存的數(shù)據(jù)。POST請求的主體可以包含非常多的數(shù)據(jù),而且格式不限。

初始化請求:

xhr.open("post", "login.jsp", true); 
首先將Content-Type頭部信息設置為application/x-www-form-urlencoded,然后建立一個字符串格式。如果需要將頁面中的表單數(shù)據(jù)進行序列化,然后再通過XHR發(fā)送到服務器,可以使用serialize()函數(shù)來創(chuàng)建這個字符串:
xhr.open("get", "login.jsp", false);
xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
var form = document.getElementById("user-info");
xhr.send(serialize(form));

以上所述是小編給大家介紹的JavaScript中Ajax的深入理解,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!

相關文章

  • 細說webpack6 Babel的使用詳解

    細說webpack6 Babel的使用詳解

    這篇文章主要介紹了細說webpack6 Babel的使用詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-09-09
  • 微信小程序實現(xiàn)日歷簽到功能

    微信小程序實現(xiàn)日歷簽到功能

    這篇文章主要為大家詳細介紹了微信小程序實現(xiàn)日歷簽到功能,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-08-08
  • Nuxt配置Element-UI按需引入的操作方法

    Nuxt配置Element-UI按需引入的操作方法

    這篇文章主要介紹了Nuxt配置Element-UI按需引入方法,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-07-07
  • 分享10個原生JavaScript技巧

    分享10個原生JavaScript技巧

    本文給大家分享的是個人總結的10條非常常用的原生javascript的小技巧,都是平時項目中用到的,這里總結記錄下來,有需要的小伙伴可以參考下。
    2015-04-04
  • JS+DIV+CSS實現(xiàn)的經(jīng)典標簽切換效果代碼

    JS+DIV+CSS實現(xiàn)的經(jīng)典標簽切換效果代碼

    這篇文章主要介紹了JS+DIV+CSS實現(xiàn)的經(jīng)典標簽切換效果代碼,涉及JavaScript基于鼠標事件針對頁面元素動態(tài)變換的實現(xiàn)技巧,頁面美觀實用,需要的朋友可以參考下
    2015-09-09
  • 第五章之BootStrap 柵格系統(tǒng)

    第五章之BootStrap 柵格系統(tǒng)

    Bootstrap,來自 Twitter,是目前最受歡迎的前端框架。本文給大家介紹BootStrap 柵格系統(tǒng)的相關資料,需要的朋友可以參考下
    2016-04-04
  • 深入學習js瀑布流布局

    深入學習js瀑布流布局

    這篇文章主要幫助大家深入理解js瀑布流布局,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-10-10
  • JS實現(xiàn)仿QQ面板的手風琴效果折疊菜單代碼

    JS實現(xiàn)仿QQ面板的手風琴效果折疊菜單代碼

    這篇文章主要介紹了JS實現(xiàn)仿QQ面板的手風琴效果折疊菜單代碼,涉及JavaScript基于鼠標事件動態(tài)操作頁面元素樣式的相關技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-09-09
  • JavaScript技巧44招【實用】

    JavaScript技巧44招【實用】

    JavaScript是一個絕冠全球的編程語言,可用于Web開發(fā)、移動應用開發(fā)(PhoneGap、Appcelerator)、服務器端開發(fā)(Node.js和Wakanda)等等。本文主要介紹JavaScript應用的一些小技巧。
    2016-12-12
  • uniapp定義動畫的幾種方式總結

    uniapp定義動畫的幾種方式總結

    我們都知道,動畫其實是由一幀一幀圖片組成,快遞地播放一組圖片就形成了動畫,下面這篇文章主要給大家介紹了關于uniapp定義動畫的幾種方式,需要的朋友可以參考下
    2023-02-02

最新評論

进贤县| 宣武区| 红桥区| 讷河市| 丹凤县| 永善县| 青龙| 哈尔滨市| 平昌县| 鲁山县| 桦川县| 板桥市| 普定县| 犍为县| 仲巴县| 九江市| 彝良县| 上杭县| 奇台县| 平阳县| 嘉义市| 漳浦县| 永寿县| 仙居县| 会泽县| 和顺县| 邹城市| 潞城市| 卢氏县| 错那县| 高邑县| 安丘市| 合川市| 太谷县| 东明县| 田林县| 宜川县| 海原县| 佛学| 深州市| 石城县|