jQuery中的ajax

一、jQuery中的ajax

1. 封裝第一層 - 類似于原生ajax的用法

  $ajax

2. 封裝第二層 - 基于第一層再次封裝

  $().load(); 
  $.post();
  $.get();

3. 封裝的第三層 - 特殊用法

  $.getScript(); - 動態(tài)讀取腳本(js代碼)
  $.getJson();  - 接收json格式數(shù)據(jù)

二、load(url,data,callback)方法

1. 最簡單、局限性最大

     url - 設置ajax的請求地址

     data - 設置ajax的請求數(shù)據(jù)
        要求為key:value格式,其實就是js的對象格式

     callback: ajax請求成功后的回調函數(shù)
        回調函數(shù)的參數(shù)就是服務器返回的數(shù)據(jù)

2. 服務器響應的數(shù)據(jù)自動寫入調用load方法的屬性中

3. load()方法的請求類型

    1)沒有請求數(shù)據(jù)時,請求類型是GET
    2) 發(fā)送請求數(shù)據(jù)時,請求類型是POST

4. load()方法接受服務器端的響應數(shù)據(jù)

    是以字符串類型(HTML格式)來接受

三、get/post()方法

1. get(url,data,callback,type)

   1. 參數(shù)
   
      url - 設置ajax的請求地址

      data - 設置ajax的請求數(shù)據(jù)
  
         要求為key:value格式,其實就是js的對象格式

      callback: ajax請求成功后的回調函數(shù)

         回調函數(shù)的參數(shù)就是服務器返回的數(shù)據(jù)

      type:設置服務器端響應的數(shù)據(jù)格式

         默認值為HTML,還可以為xml/json

   2. 無論是否發(fā)送請求數(shù)據(jù),請求類型都是GET

   3. $.get()方法可以接受HTML/XML/JSON格式

2. post(url,data,callback,type)

   使用方式跟get一模一樣

四、$.ajax(options)方法

1. options的格式是{key:value}

2. url:請求地址

3. type:請求類型,默認為get

4. async:是否異步,默認為true

5. contentType POST方式發(fā)送數(shù)據(jù)的前提

    默認值為application/x-www-form-urlencoded

6. data:請求數(shù)據(jù),格式必須為key=value

7. success:請求成功后的回調函數(shù)

    function(data,textStatus)

      data - 服務器響應的內容

      textStatus - 表示ajax請求的狀態(tài),此時的值為success

8. error:請求失敗后的回調函數(shù)

    function(XMLHttpRequest,textStatus,errorThrown)

      XMLHttpRequest - ajax的核心對象

      errorThrown - 錯誤異常信息

      textStatus - 表示ajax請求的狀態(tài)

        error/timeout/notmodified

9. dataType:數(shù)據(jù)響應格式

      HTML/XML/JSON

五、使用$.getScript(url,calback)動態(tài)讀取腳本

1. 若JS代碼過多時,會影響HTML頁面加載的速度,如果已被加載的JS代碼并不是立即執(zhí)行,只加載馬上執(zhí)行的js代碼,會提交效率

2. 參數(shù)

 url - 讀取腳本的地址(本地或服務器)
 calback - 回調函數(shù)

六、表單的Ajax異步提交 -

1. 表單的序列化

  1)serialize() 返回的是json字符串

     使用表單元素的name屬性值
     {key:value}

  2)serializeArray() 返回的是json對象

     json對象由一個對象數(shù)組組成
     [obj1,obj2,obj3,...]

  注意:

   表單必須要有name屬性

2. jQuery.form插件

   1)實現(xiàn)表單的異步提交,底層機制,還是使用正常的表單提交機制

   2)兩個核心方法 - 參數(shù)既是一個option參數(shù)
      ajaxForm(options)方法
        
         ajaxForm()不能提交表單。在document的ready函數(shù)中,使用ajaxForm來為AJAX提交表單進行準備。提交動作必須由submit開始 

      ajaxSubmit(option)方法

          ajaxSubmit()馬上由AJAX來提交表單。你可以在任何情況下進行該項提交。 
        

   3) 參數(shù)

          target  服務器返回內容所存放的元素ID

          beforeSubmit  提交前回調函數(shù),如果返回false,則不提交

          success 提交后的回調函數(shù),一般有兩個參數(shù)responseText,statusText

          url 默認是form的action,如果聲明,則覆蓋

          type  默認是form的method,如果聲明,則覆蓋

          dataType  html(默認),xml,script,json….接受服務端返回的類型

          clearForm 布爾值,成功提交后,是否清除所有表單元素值

          resetForm 布爾值,成功提交后,是否重置所有表單元素值
          
          timeout 限制請求時間,大于該時間后則跳出請求

3. 表單異步提交的方式

   1)不使用submit按鈕,而是使用button按鈕,通過綁定click事件,實現(xiàn)提交
      
      表單的序列化
      表單的異步提交

   2) (常用)依舊使用submit事件,在form元素中綁定onsubmit事件,在onsubmit事件的處理函數(shù)中要做如下事情

       表單的序列化
       表單的異步提交
       組織表單的默認行為

七、getJson()方法 - 可以實現(xiàn)跨域提交

1. 什么叫做跨域

 跨域:

    完全跨域 - IP不同
    跨子域 - IP相同,但端口號不同

 域名:

    頂級域名 - http://www.baidu.com

    二級域名 - http://www.baidu.com/kongjian

 萬維網(wǎng)協(xié)議:

     默認是不允許跨域請求的

  服務器那邊返回的是一個函數(shù)字符串
  $.getJson("url?callback=?",function(data){


  })
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • 標簽(空格分隔): ajax 用JavaScript寫AJAX前面已經(jīng)介紹過了,主要問題就是不同瀏覽器需要寫不同代...
    lvyweb閱讀 965評論 0 0
  • jQuery對ajax進行了3層封裝。最底層為$.ajax()方法、第2層為load(),$get(),$post...
    whatcanhumando閱讀 631評論 0 1
  • jQuery中的ajax 封裝第一層 - 類似于原生ajax的用法$ajax 封裝第二層 - 基于第一層再次封裝$...
    不住海邊也喜歡浪閱讀 278評論 0 0
  • 一、jQuery中的ajax 封裝第一層 - 類似于原生ajax的用法$ajax 封裝第二層 - 基于第一層再次封...
    Alone灬旅途閱讀 214評論 0 0
  • 用JavaScript寫AJAX前面已經(jīng)介紹過了,主要問題就是不同瀏覽器需要寫不同代碼,并且狀態(tài)和錯誤處理寫起來很...
    常威爆打來福閱讀 922評論 0 5

友情鏈接更多精彩內容