亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

jQuery中Ajax的詳細介紹

發布時間:2021-07-20 18:01:19 來源:億速云 閱讀:168 作者:chen 欄目:web開發

這篇文章主要介紹“jQuery中Ajax的詳細介紹”,在日常操作中,相信很多人在jQuery中Ajax的詳細介紹問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”jQuery中Ajax的詳細介紹”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

Ajax讓用戶頁面豐富起來, 增強用戶體驗. Ajax是所有Web開發的必修課. 雖然Ajax技術并不復雜, 但是實現方式還是會因為每個開發人員而有所差異.jQuery提供一系列Ajax函數來幫助我們統一這種差異, 并且讓調用Ajax更加簡單.jQuery提供了幾個用于發送Ajax請求的函數. 其中最核心也是最復雜的是jQuery.ajax(),所有的其他Ajax函數都是它的一個簡化調用.當我們想要完全控制Ajax時可以使用此結果, 否則還是使用簡化方法如get, post, load等更加方便. 所以jQuery.ajax( options ) 方法放到***一個介紹. 先來介紹最簡單的load方法:

1. load( url, [data], [callback] )

Returns: jQuery包裝集說明

load方法能夠載入遠程 HTML 文件代碼并插入至 DOM 中。

默認使用 GET 方式, 如果傳遞了data參數則使用Post方式.

傳遞附加參數時自動轉換為 POST 方式。jQuery 1.2 中,可以指定選擇符,來篩選載入的 HTML 文檔,DOM 中將僅插入篩選出的 HTML 代碼。語法形如 "url #some > selector", 默認的選擇器是"body>*".

講解:

load是最簡單的Ajax函數, 但是使用具有局限性:

它主要用于直接返回HTML的Ajax接口

load是一個jQuery包裝集方法,需要在jQuery包裝集上調用,并且會將返回的HTML加載到對象中, 即使設置了回調函數也還是會加載。

不過不可否認load接口設計巧妙并且使用簡單.下面通過示例來演示Load接口的使用:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head>     <title>jQuery Ajax - Load</title>      <script type="text/javascript" src="../scripts/jquery-1.3.2-vsdoc2.js"></script>      <script type="text/javascript">         $(function()          {              $("#btnAjaxGet").click(function(event)              {                  //發送Get請求                  $("#divResult").load("../data/AjaxGetMethod.aspx?param=btnAjaxGet_click" + "&timestamp=" + (new Date()).getTime());              });               $("#btnAjaxPost").click(function(event)              {                  //發送Post請求                  $("#divResult").load("../data/AjaxGetMethod.aspx", { "param": "btnAjaxPost_click" });              });               $("#btnAjaxCallBack").click(function(event)              {                  //發送Post請求, 返回后執行回調函數.                  $("#divResult").load("../data/AjaxGetMethod.aspx", { "param": "btnAjaxCallBack_click" }, function(responseText, textStatus, XMLHttpRequest)                  {                      responseText = " Add in the CallBack Function! <br/>" + responseText                      $("#divResult").html(responseText); //或者: $(this).html(responseText);                  });              });               $("#btnAjaxFiltHtml").click(function(event)              {                  //發送Get請求, 從結果中過濾掉 "鞍山" 這一項                  $("#divResult").load("../data/AjaxGetCityInfo.aspx?resultType=html" + "&timestamp=" + (new Date()).getTime() + " ul>li:not(:contains('鞍山'))");              });           })      </script>  </head> <body>     <button id="btnAjaxGet">使用Load執行Get請求</button><br />     <button id="btnAjaxPost">使用Load執行Post請求</button><br />     <button id="btnAjaxCallBack">使用帶有回調函數的Load方法</button><br />     <button id="btnAjaxFiltHtml">使用selector過濾返回的HTML內容</button>     <br />     <div id="divResult"></div> </body> </html>

提示:我們要時刻注意瀏覽器緩存, 當使用GET方式時要添加時間戳參數 (net Date()).getTime() 來保證每次發送的URL不同, 可以避免瀏覽器緩存.

提示: 當在url參數后面添加了一個空格, 比如" "的時候, 會出現"無法識別符號"的錯誤, 請求還是能正常發送. 但是無法加載HTML到DOM. 刪除后問題解決.

2.jQuery.get( url, [data], [callback], [type] )

Returns: XMLHttpRequest說明:

通過遠程 HTTP GET 請求載入信息。

這是一個簡單的 GET 請求功能以取代復雜 $.ajax 。請求成功時可調用回調函數。如果需要在出錯時執行函數,請使用 $.ajax。

講解:

此函數發送Get請求, 參數可以直接在url中拼接, 比如:

<script>     $.get("../data/AjaxGetMethod.aspx?param=btnAjaxGet_click");  </script>

或者通過data參數傳遞:

<script>     $.get("../data/AjaxGetMethod.aspx", { "param": "btnAjaxGet2_click" });  </script>

兩種方式效果相同, data參數會自動添加到請求的url中如果url中的某個參數, 又通過data參數傳遞, 不會自動合并相同名稱的參數.回調函數的簽名如下:

<script> function (data, textStatus) {    // data could be xmlDoc, jsonObj, html, text, etc...    this; // the options for this ajax request  }  </script>

其中data是返回的數據, testStatus表示狀態碼, 可能是如下值:

"timeout","error","notmodified","success","parsererror"

在回調函數中的this是獲取options對象的引用.有關options的各種說明, 請參見:

http://docs.jquery.com/Ajax/jQuery.ajax#options

type參數是指data數據的類型, 可能是下面的值:

"xml", "html", "script", "json", "jsonp", "text".

默認為"html".

jQuery.getJSON( url, [data], [callback] ) 方法就相當于 jQuery.get(url, [data],[callback], "json")

3. jQuery.getJSON( url, [data], [callback] )

Returns: XMLHttpRequest

相當于: jQuery.get(url, [data],[callback], "json")

說明:通過 HTTP GET 請求載入 JSON 數據。

在jQuery 1.2 中,您可以通過使用JSONP 形式的回調函數來加載其他網域的JSON數據,如 "myurl?callback=?"。jQuery 將自動替換 ? 為正確的函數名,以執行回調函數。

注意:此行以后的代碼將在這個回調函數執行前執行。

講解:getJSON函數僅僅將get函數的type參數設置為"JSON"而已. 在回調函數中獲取的數據已經是按照JSON格式解析后的對象了:

<script>     $.getJSON("../data/AjaxGetCityInfo.aspx", { "resultType": "json" }, function(data, textStatus)      {            alert(data.length);            alert(data[0].CityName);      });  </script>

服務器端返回的字符串如下:

<script>     [{""pkid"":""0997"",""ProvinceId"":""XJ"",""CityName"":""阿克蘇"",""CityNameEn"":""Akesu"",""PostCode"":""843000"",""isHotCity"":false},       {""pkid"":""0412"",""ProvinceId"":""LN"",""CityName"":""鞍山"",""CityNameEn"":""Anshan"",""PostCode"":""114000"",""isHotCity"":false}]  </script>

4.jQuery.getScript( url, [callback] )

Returns: XMLHttpRequest

相當于: jQuery.get(url, null, [callback], "script")

說明:通過 HTTP GET 請求載入并執行一個 JavaScript 文件。

jQuery 1.2 版本之前,getScript 只能調用同域 JS 文件。 1.2中,您可以跨域調用 JavaScript 文件。注意:Safari 2 或更早的版本不能在全局作用域中同步執行腳本。如果通過 getScript 加入腳本,請加入延時函數。

講解:

以前我使用dojo類庫時官方默認的文件不支持跨域***導致我放棄使用dojo(雖然在網上找到了可以跨域的版本, 但是感覺不夠***). 所以我特別對這個函數的核心實現和使用做了研究.

首先了解此函數的jQuery內部實現, 仍然使用get函數, jQuery所有的Ajax函數包括get***都是用的是jQuery.ajax(), getScript將傳入值為"script"的type參數, ***在Ajax函數中對type為script的請求做了如下處理:

<script>     var head = document.getElementsByTagName("head")[0];      var script = document.createElement("script");      sscript.src = s.url;  </script>

上面的代碼動態建立了一個script語句塊, 并且將其加入到head中:

<script> head.appendChild(script);  </script>

當腳本加載完畢后, 再從head中刪除:

<script>     // Handle Script loading                  if ( !jsonp ) {                      var done = false;                       // Attach handlers for all browsers                      scriptscript.onload = script.onreadystatechange = function(){                          if ( !done && (!this.readyState ||                                  this.readyState == "loaded" || this.readyState == "complete") ) {                              done = true;                              success();                              complete();                               // Handle memory leak in IE                              scriptscript.onload = script.onreadystatechange = null;                              head.removeChild( script );                          }                      };                  }  </script>

5. jQuery.post( url, [data], [callback], [type] )

Returns: XMLHttpRequest

說明:通過遠程 HTTP POST 請求載入信息。

這是一個簡單的 POST 請求功能以取代復雜 $.ajax 。請求成功時可調用回調函數。如果需要在出錯時執行函數,請使用 $.ajax。

講解:具體用法和get相同, 只是提交方式由"GET"改為"POST".

6. jQuery.ajax( options )

Returns: XMLHttpRequest

說明:通過 HTTP 請求加載遠程數據。

jQuery 底層 AJAX 實現。簡單易用的高層實現見 $.get, $.post 等。

$.ajax() 返回其創建的 XMLHttpRequest 對象。大多數情況下你無需直接操作該對象,但特殊情況下可用于手動終止請求。

$.ajax() 只有一個參數:參數 key/value 對象,包含各配置及回調函數信息。詳細參數選項見下。

注意: 如果你指定了 dataType 選項,請確保服務器返回正確的 MIME 信息,(如 xml 返回 "text/xml")。錯誤的 MIME 類型可能導致不可預知的錯誤。見 Specifying the Data Type for AJAX Requests 。

注意:如果dataType設置為"script",那么所有的遠程(不在同一域名下)的POST請求都將轉化為GET請求。(因為將使用DOM的script標簽來加載)

jQuery 1.2 中,您可以跨域加載 JSON 數據,使用時需將數據類型設置為 JSONP。使用 JSONP 形式調用函數時,如 "myurl?callback=?" jQuery 將自動替換 ? 為正確的函數名,以執行回調函數。數據類型設置為 "jsonp" 時,jQuery 將自動調用回調函數。

講解:

這是jQuery中Ajax的核心函數, 上面所有的發送Ajax請求的函數內部***都會調用此函數.options參數支持很多參數, 使用這些參數可以完全控制ajax請求. 在Ajax回調函數中的this對象也是options對象.

因為平時使用最多的還是簡化了的get和post函數, 所以在此不對options參數做詳細講解了. options參數文檔請見:http://docs.jquery.com/Ajax/jQuery.ajax#options

本文介紹如何使用jquery實現Ajax功能. 用于發送Ajax請求的相關函數如load, get, getJSON和post這些漸變Ajax方法, 對于核心的ajax 方法沒有過多介紹, 主要是通過配置復雜的參數實現完全控制Ajax請求。

到此,關于“jQuery中Ajax的詳細介紹”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

中阳县| 通山县| 太仓市| 中山市| 连南| 定西市| 宝兴县| 揭西县| 四子王旗| 凤冈县| 邻水| 甘孜| 宁国市| 资中县| 昭觉县| 闽清县| 平远县| 改则县| 长武县| 正宁县| 台中县| 得荣县| 临武县| 偃师市| 五常市| 正宁县| 东至县| 托克托县| 吉隆县| 新化县| 繁昌县| 东城区| 阳西县| 清水河县| 衡南县| 顺昌县| 沿河| 九江县| 会东县| 迭部县| 安图县|