搜尋
首頁web前端js教程jQuery Ajax 實例 全解析

jQuery Ajax 實例 全解析

Jun 30, 2017 pm 02:16 PM
ajaxjquery解析

jQuery確實是個挺好的輕量級的JS框架,能幫助我們快速的開發JS應用,並且在某種程度上改變了我們寫JavaScript程式碼的習慣。

    廢話少說,直接進入正題,我們先來看一些簡單的方法,這些方法都是對jQuery.ajax()進行封裝以方便我們使用的方法,當然,如果要處理複雜的邏輯,還是需要用到jQuery.ajax()的(這個後面會說到).

    1. load( url, [ data], [callback] ) :載入遠端HTML 檔案程式碼並插入至DOM 中。

    url (String) : 請求的HTML頁的URL位址。

    data (Map) : (可選參數) 傳送至伺服器的 key/value 資料。

    callback (Callback) : (可選參數) 請求完成時(不需要是success的)的回呼函數

    這個方法預設使用 GET 方式來傳遞的,如果[data]參數有傳遞資料進去,就會自動轉換為POST方式的。 jQuery 1.2 中,可以指定選擇符,來篩選載入的 HTML 文檔,DOM 中將只插入篩選出的 HTML 程式碼。語法形如 "url #some > selector"。

    這個方法可以很方便的動態載入一些HTML文件,例如表單。

    範例程式碼:

$("").load("",
 (responseText, textStatus, XMLHttpRequest){
; 
});

 

這裡將顯示結果。

 

註:不知道為什麼URL寫絕對路徑在FF下會出錯,知道的麻煩告訴下。下面的get()和post()範例使用的是絕對路徑,所以在FF下你將會出錯並不會看到回傳結果。 還有get()和post()範例都是跨域呼叫的,發現傳上來後沒辦法取得結果,所以把運行按鈕去掉了。

 

2. jQuery.get( url, [data], [callback] ):使用GET方式來進行非同步請求

參數:

url (String) :  傳送請求的URL位址.

data (Map) : (可選) 要傳送給伺服器的數據,以Key/value 的鍵值對形式表示,會做為QueryString附加到請求URL中。

callback (Function) : (可選) 載入成功時回呼函數(只有當Response的回傳狀態是success才是呼叫該方法)。

這是一個簡單的 GET 請求功能以取代複雜 $.ajax 。請求成功時可呼叫回調函數。如果需要在出錯時執行函數,請使用 $.ajax。範例程式碼:

 $.get("", {Action:"",Name:""},  (data, textStatus){
; (data);
});

點擊傳送請求:

jQuery.get()回呼函數裡面的this ,指向的是Ajax請求的選項配置訊息:

jQuery Ajax 實例 全解析

3. jQuery.post( url, [data], [callback], [type] ) :使用POST方式來進行非同步請求

 

參數:

url (String) : 傳送請求的URL位址.

data (Map) : (可選) 要傳送給伺服器的數據,以Key/value 的鍵值對形式表示。

callback (Function) : (可選) 載入成功時回呼函數(只有當Response的回傳狀態是success才是呼叫該方法)。

type (String) : (可選)官方的說明是:Type of data to be sent。其實應該為客戶端請求的類型(JSON,XML,等等)

這是一個簡單的 POST 請求功能以取代複雜 $.ajax 。請求成功時可呼叫回調函數。如果需要在出錯時執行函數,請使用 $.ajax。範例程式碼:

Ajax.aspx:

Response.ContentType = "";
Response.Write("" + Request[""] + "");
  • jQuery 程式碼:

  • $.post("", { Action: "", Name: "" },
     (data, textStatus){
    (data.result);
    }, "");

    點擊提交:

    這裡設定了請求的格式為"json":

    jQuery Ajax 實例 全解析

    如果你設定了請求的格式為"json",此時你沒有設定Response回來的ContentType 為:Response.ContentType = "application /json"; 那麼你將無法捕捉到返回的資料。

    注意一下,alert(data.result); 由於設定了Accept標頭為“json”,這裡返回的data就是一個對象,並不需要用eval()來轉換為對象。

     

    4. jQuery.getScript( url, [callback] ) : 透過GET 方式請求載入並執行一個JavaScript 檔案

    參數

    url (String) : 待載入 JS 檔案位址。

    callback (Function) : (可选) 成功载入后回调函数。

    jQuery 1.2 版本之前,getScript 只能调用同域 JS 文件。 1.2中,您可以跨域调用 JavaScript 文件。注意:Safari 2 或更早的版本不能在全局作用域中同步执行脚本。如果通过 getScript 加入脚本,请加入延时函数。

    这个方法可以用在例如当只有编辑器focus()的时候才去加载编辑器需要的JS文件.下面看一些示例代码:

  • 加载并执行 test.js。

  • jQuery 代码:

    $.getScript("test.js");


    加载并执行 AjaxEvent.js ,成功后显示信息。

    jQuery 代码:

    $.getScript("", (){
    ("");
    });

    加载完后请重新点击一下上面的 Load 请求看看有什么不同。

    jQuery Ajax 事件

    Ajax请求会产生若干不同的事件,我们可以订阅这些事件并在其中处理我们的逻辑。在jQuery这里有两种Ajax事件:局部事件 和 全局事件。

    局部事件就是在每次的Ajax请求时在方法内定义的,例如:

     $.ajax({
    beforeSend: (){
    },
    complete: (){
    }});

    全局事件是每次的Ajax请求都会触发的,它会向DOM中的所有元素广播,在上面 getScript() 示例中加载的脚本就是全局Ajax事件。全局事件可以如下定义:

     $("").bind("", (){
    $().show();
    }).bind("", (){
    $().hide();
    });

    或者:

     $("").ajaxStart((){
    $().show();
    });

    我们可以在特定的请求将全局事件禁用,只要设置下 global 选项就可以了:

     $.ajax({
    url: "",
    global: ,});

    下面是jQuery官方给出的完整的Ajax事件列表:

    • ajaxStart (Global Event)
      This event is broadcast if an Ajax request is started and no other Ajax requests are currently running.

      • beforeSend (Local Event)
            This event, which is triggered before an Ajax request is started, allows you to modify the XMLHttpRequest object (setting additional headers, if need be.)

      • ajaxSend (Global Event)
            This global event is also triggered before the request is run.

      • success (Local Event)
            This event is only called if the request was successful (no errors from the server, no errors with the data).

      • ajaxSuccess (Global Event)
            This event is also only called if the request was successful.

      • error (Local Event)
            This event is only called if an error occurred with the request (you can never have both an error and a success callback with a request).

      • ajaxError (Global Event)
            This global event behaves the same as the local error event.

      • complete (Local Event)
            This event is called regardless of if the request was successful, or not. You will always receive a complete callback, even for synchronous requests.

      • ajaxComplete (Global Event)
            This event behaves the same as the complete event and will be triggered every time an Ajax request finishes.

    • ajaxStop (Global Event)
      This global event is triggered if there are no more Ajax requests being processed.

      具体的全局事件请参考API文档。
      好了,下面开始说jQuery里面功能最强的Ajax请求方法 $.ajax();  

       

      jQuery.ajax( options ) : 通过 HTTP 请求加载远程数据

      这个是jQuery 的底层 AJAX 实现。简单易用的高层实现见 $.get, $.post 等。

      $.ajax() 返回其创建的 XMLHttpRequest 对象。大多数情况下你无需直接操作该对象,但特殊情况下可用于手动终止请求。

      注意: 如果你指定了 dataType 选项,请确保服务器返回正确的 MIME 信息,(如 xml 返回 "text/xml")。错误的 MIME 类型可能导致不可预知的错误。见 Specifying the Data Type for AJAX Requests 。
      当设置 datatype 类型为 'script' 的时候,所有的远程(不在同一个域中)POST请求都回转换为GET方式。

      $.ajax() 只有一个参数:参数 key/value 对象,包含各配置及回调函数信息。详细参数选项见下。

      jQuery 1.2 中,您可以跨域加载 JSON 数据,使用时需将数据类型设置为 JSONP。使用 JSONP 形式调用函数时,如 "myurl?callback=?" jQuery 将自动替换 ? 为正确的函数名,以执行回调函数。数据类型设置为 "jsonp" 时,jQuery 将自动调用回调函数。(这个我不是很懂)

      参数列表:

      参数名 类型 描述
      url String (默认: 当前页地址) 发送请求的地址。
      type String (默认: "GET") 请求方式 ("POST" 或 "GET"), 默认为 "GET"。注意:其它 HTTP 请求方法,如 PUT 和 DELETE 也可以使用,但仅部分浏览器支持。
      timeout Number 设置请求超时时间(毫秒)。此设置将覆盖全局设置。
      async Boolean (默认: true) 默认设置下,所有请求均为异步请求。如果需要发送同步请求,请将此选项设置为 false。注意,同步请求将锁住浏览器,用户其它操作必须等待请求完成才可以执行。
      beforeSend Function 发送请求前可修改 XMLHttpRequest 对象的函数,如添加自定义 HTTP 头。XMLHttpRequest 对象是唯一的参数。
       (XMLHttpRequest) {
      ; 
               }
      cache Boolean (默认: true) jQuery 1.2 新功能,设置为 false 将不会从浏览器缓存中加载请求信息
      complete Function 请求完成后回调函数 (请求成功或失败时均调用)。参数: XMLHttpRequest 对象,成功信息字符串。
       (XMLHttpRequest, textStatus) {
      ; 
               }
      contentType String (默认: "application/x-www-form-urlencoded") 发送信息至服务器时内容编码类型。默认值适合大多数应用场合。
      data Object,
              String
      发送到服务器的数据。将自动转换为请求字符串格式。GET 请求中将附加在 URL 后。查看 processData 选项说明以禁止此自动转换。必须为 Key/Value 格式。如果为数组,jQuery 将自动为不同值对应同一个名称。如 {foo:["bar1", "bar2"]} 转换为 '&foo=bar1&foo=bar2'。
      dataType String

      预期服务器返回的数据类型。如果不指定,jQuery 将自动根据 HTTP 包 MIME 信息返回 responseXML 或 responseText,并作为回调函数参数传递,可用值:

      "xml": 返回 XML 文档,可用 jQuery 处理。

      "html": 返回纯文本 HTML 信息;包含 script 元素。

      "script": 返回纯文本 JavaScript 代码。不会自动缓存结果。

      "json": 返回 JSON 数据 。

      "jsonp": JSONP 格式。使用 JSONP 形式调用函数时,如 "myurl?callback=?" jQuery 将自动替换 ? 为正确的函数名,以执行回调函数。

      error Function (默认: 自动判断 (xml 或 html)) 请求失败时将调用此方法。这个方法有三个参数:XMLHttpRequest 对象,错误信息,(可能)捕获的错误对象。
       (XMLHttpRequest, textStatus, errorThrown) {
      
               ; 
               }
      global Boolean (默认: true) 是否触发全局 AJAX 事件。设置为 false 将不会触发全局 AJAX 事件,如 ajaxStart 或 ajaxStop 。可用于控制不同的Ajax事件
      ifModified Boolean (默认: false) 仅在服务器数据改变时获取新数据。使用 HTTP 包 Last-Modified 头信息判断。
      processData Boolean (默认: true) 默认情况下,发送的数据将被转换为对象(技术上讲并非字符串) 以配合默认内容类型 "application/x-www-form-urlencoded"。如果要发送 DOM 树信息或其它不希望转换的信息,请设置为 false。
      success Function 请求成功后回调函数。这个方法有两个参数:服务器返回数据,返回状态
       (data, textStatus) {
      
               ; 
               }

      这里有几个Ajax事件参数:beforeSend success complete ,error 。我们可以定义这些事件来很好的处理我们的每一次的Ajax请求。注意一下,这些Ajax事件里面的 this 都是指向Ajax请求的选项信息的(请参考说 get() 方法时的this的图片)。
      请认真阅读上面的参数列表,如果你要用jQuery来进行Ajax开发,那么这些参数你都必需熟知的。

      示例代码,获取博客园首页的文章题目:

      $.ajax({
      type: "",
      url: "",
      beforeSend: (XMLHttpRequest){
      },
      success: (data, textStatus){
      $("").html("");
      $("",data).each((i, domEle){
      $("").append(""+$(domEle).children("").text()+"");
      });
      },
      complete: (XMLHttpRequest, textStatus){
      },
      error: (){
      }
      });

      这里将显示首页文章列表。

       

       

      其他

      jQuery.ajaxSetup( options ) : 设置全局 AJAX 默认选项。

      设置 AJAX 请求默认地址为 "/xmlhttp/",禁止触发全局 AJAX 事件,用 POST 代替默认 GET 方法。其后的 AJAX 请求不再设置任何选项参数。

      jQuery 代码:

      $.ajaxSetup({
      url: "",
      global: ,
      type: ""
      });
      $.ajax({ data: myData });

       

      serialize() 与 serializeArray()

      serialize() : 序列表表格内容为字符串。

      serializeArray() : 序列化表格元素 (类似 '.serialize()' 方法) 返回 JSON 数据结构数据。

      示例:

      HTML代码:

       =Results:   =SingleSingle2 = = =MultipleMultiple2 =Multiple3 = = = check1
       = = = 
      
      = check2
       = = = 
      
      = radio1
       = = = radio2
    • serializeArray() 结果为:

      jQuery Ajax 實例 全解析

    以上是jQuery Ajax 實例 全解析的詳細內容。更多資訊請關注PHP中文網其他相關文章!

    陳述
    本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
    了解JavaScript引擎:實施詳細信息了解JavaScript引擎:實施詳細信息Apr 17, 2025 am 12:05 AM

    理解JavaScript引擎內部工作原理對開發者重要,因為它能幫助編寫更高效的代碼並理解性能瓶頸和優化策略。 1)引擎的工作流程包括解析、編譯和執行三個階段;2)執行過程中,引擎會進行動態優化,如內聯緩存和隱藏類;3)最佳實踐包括避免全局變量、優化循環、使用const和let,以及避免過度使用閉包。

    Python vs. JavaScript:學習曲線和易用性Python vs. JavaScript:學習曲線和易用性Apr 16, 2025 am 12:12 AM

    Python更適合初學者,學習曲線平緩,語法簡潔;JavaScript適合前端開發,學習曲線較陡,語法靈活。 1.Python語法直觀,適用於數據科學和後端開發。 2.JavaScript靈活,廣泛用於前端和服務器端編程。

    Python vs. JavaScript:社區,圖書館和資源Python vs. JavaScript:社區,圖書館和資源Apr 15, 2025 am 12:16 AM

    Python和JavaScript在社區、庫和資源方面的對比各有優劣。 1)Python社區友好,適合初學者,但前端開發資源不如JavaScript豐富。 2)Python在數據科學和機器學習庫方面強大,JavaScript則在前端開發庫和框架上更勝一籌。 3)兩者的學習資源都豐富,但Python適合從官方文檔開始,JavaScript則以MDNWebDocs為佳。選擇應基於項目需求和個人興趣。

    從C/C到JavaScript:所有工作方式從C/C到JavaScript:所有工作方式Apr 14, 2025 am 12:05 AM

    從C/C 轉向JavaScript需要適應動態類型、垃圾回收和異步編程等特點。 1)C/C 是靜態類型語言,需手動管理內存,而JavaScript是動態類型,垃圾回收自動處理。 2)C/C 需編譯成機器碼,JavaScript則為解釋型語言。 3)JavaScript引入閉包、原型鍊和Promise等概念,增強了靈活性和異步編程能力。

    JavaScript引擎:比較實施JavaScript引擎:比較實施Apr 13, 2025 am 12:05 AM

    不同JavaScript引擎在解析和執行JavaScript代碼時,效果會有所不同,因為每個引擎的實現原理和優化策略各有差異。 1.詞法分析:將源碼轉換為詞法單元。 2.語法分析:生成抽象語法樹。 3.優化和編譯:通過JIT編譯器生成機器碼。 4.執行:運行機器碼。 V8引擎通過即時編譯和隱藏類優化,SpiderMonkey使用類型推斷系統,導致在相同代碼上的性能表現不同。

    超越瀏覽器:現實世界中的JavaScript超越瀏覽器:現實世界中的JavaScriptApr 12, 2025 am 12:06 AM

    JavaScript在現實世界中的應用包括服務器端編程、移動應用開發和物聯網控制:1.通過Node.js實現服務器端編程,適用於高並發請求處理。 2.通過ReactNative進行移動應用開發,支持跨平台部署。 3.通過Johnny-Five庫用於物聯網設備控制,適用於硬件交互。

    使用Next.js(後端集成)構建多租戶SaaS應用程序使用Next.js(後端集成)構建多租戶SaaS應用程序Apr 11, 2025 am 08:23 AM

    我使用您的日常技術工具構建了功能性的多租戶SaaS應用程序(一個Edtech應用程序),您可以做同樣的事情。 首先,什麼是多租戶SaaS應用程序? 多租戶SaaS應用程序可讓您從唱歌中為多個客戶提供服務

    如何使用Next.js(前端集成)構建多租戶SaaS應用程序如何使用Next.js(前端集成)構建多租戶SaaS應用程序Apr 11, 2025 am 08:22 AM

    本文展示了與許可證確保的後端的前端集成,並使用Next.js構建功能性Edtech SaaS應用程序。 前端獲取用戶權限以控制UI的可見性並確保API要求遵守角色庫

    See all articles

    熱AI工具

    Undresser.AI Undress

    Undresser.AI Undress

    人工智慧驅動的應用程序,用於創建逼真的裸體照片

    AI Clothes Remover

    AI Clothes Remover

    用於從照片中去除衣服的線上人工智慧工具。

    Undress AI Tool

    Undress AI Tool

    免費脫衣圖片

    Clothoff.io

    Clothoff.io

    AI脫衣器

    AI Hentai Generator

    AI Hentai Generator

    免費產生 AI 無盡。

    熱門文章

    R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
    1 個月前By尊渡假赌尊渡假赌尊渡假赌
    R.E.P.O.最佳圖形設置
    1 個月前By尊渡假赌尊渡假赌尊渡假赌
    R.E.P.O.如果您聽不到任何人,如何修復音頻
    1 個月前By尊渡假赌尊渡假赌尊渡假赌
    R.E.P.O.聊天命令以及如何使用它們
    1 個月前By尊渡假赌尊渡假赌尊渡假赌

    熱工具

    mPDF

    mPDF

    mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),

    Safe Exam Browser

    Safe Exam Browser

    Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。

    ZendStudio 13.5.1 Mac

    ZendStudio 13.5.1 Mac

    強大的PHP整合開發環境

    SublimeText3 Mac版

    SublimeText3 Mac版

    神級程式碼編輯軟體(SublimeText3)

    Dreamweaver Mac版

    Dreamweaver Mac版

    視覺化網頁開發工具