弄一個ajax筆記方便查詢-$.ajax()

来源:http://www.cnblogs.com/liu-fei-fei/archive/2016/09/19/5886624.html
-Advertisement-
Play Games

$.ajax()是所有ajax方法中最底層的方法,所有其他方法都是基於$.ajax()方法的封裝。這個方法只有一個參數,傳遞一個各個功能鍵值對的對象。 $.ajax()方法對象參數表: 註意:對於data屬性,如果是GET模式,可以使用三種之前說所的三種形式。如果是POST模式可以使用之前的兩種形式 ...


$.ajax()是所有ajax方法中最底層的方法,所有其他方法都是基於$.ajax()方法的封裝。
這個方法只有一個參數,傳遞一個各個功能鍵值對的對象。

$.ajax()方法對象參數表:

參數               類型                說明
url               String             發送請求的地址
type              String             請求方式:POST或GET,預設GET
timeout           Number             設置請求超時的時間(毫秒)
data              Object或String     發送到伺服器的數據,對象或鍵值對字元串
dataType          String             返回的數據類型,比如html、xml、json等
beforeSend        Function           發送請求前可修改XMLHttpRequest對象的函數
complete          Function           請求完成後調用的回調函數
seccess           Function           請求成功後調用的回調函數
error             Function           請求失敗時調用的回調函數
global            Boolean            預設為true,表示是否觸發全局Ajax
cache             Boolean            設置瀏覽器緩存響應,預設為true。如果dataType類型為script或jsonp則為false。
content           DOM                指定某個元素為與這個請求相關的所有回調函數的上下文。
contentType       String             指定請求內容的類型。預設為application/x-www-form-urlencoded。
async             Boolean            是否非同步處理。預設為true,false為同步處理
processData       Boolean            預設為true,數據被處理為URL編碼格式。如果為false,則阻止將傳入的數據處理為URL編碼的格式。
dataFilter        Function           用來篩選響應數據的回調函數。
ifModified        Boolean            預設為false,不進行頭檢測。如果為true,進行頭檢測,當相應內容與上次請求改變時,請求被認為是成功的。
jsonp             String             指定一個查詢參數名稱來覆蓋預設的jsonp回調參數名callback。
username          String             在HTTP認證請求中使用的用戶名
password          String             在HTTP認證請求中使用的密碼
scriptCharset     String             當遠程和本地內容使用不同的字元集時,用來設置script和jsonp請求所使用的字元集。
xhr               Function           用來提供XHR實例自定義實現的回調函數
traditional       Boolean            預設為false,不使用傳統風格的參數序列化。如為true,則使用。
$('.ajax_btn').on('click',function(){
    $.ajax({
        type:"GET",
        url:"ajax.php",
        data:{
            url:"snail",
        },
        success:function(response,status,xhr){
            console.log(response);
        }
    })
});

註意:對於data屬性,如果是GET模式,可以使用三種之前說所的三種形式。如果是POST模式可以使用之前的兩種形式。

一.載入請求
在Ajax非同步發送請求時,遇到網速較慢的情況,就會出現請求時間較長的問題。而超過一定時間的請求,用戶就會變得不再耐煩而關閉頁面。而如果在請求期間能給用戶一些提示,比如:正在努力載入中...,那麼相同的請求時間會讓用戶體驗更加的好一些。
Query提供了兩個全局事件,.ajaxStart()和.ajaxStop()。
這兩個全局事件,只要用戶觸發了Ajax,請求開始時(未完成其他請求)激活.ajaxStart(),請求結束時(所有請求都結束了)激活.ajaxStop()。
$('.ajax_load').ajaxStart(function(){
    $(this).show();
}).ajaxStop(function(){
    $(this).hide();
});

註意:以上代碼在jQuery1.8及以後的版本不在有效,需要使用jquery-migrate向下相容才能運行。新版本中,必須綁定在document元素上。

$(document).ajaxStart(function(){
    $('.ajax_load').show();
}).ajaxStop(function(){
    $('.ajax_load').hide();
});
// 請求時間過長,導致頁面呈現假死狀態,所以可以設置超時
$.ajax({
    timeout:2000,
});
// 如果某個ajax不想觸發全局事件,可以設置取消;比如取消觸發.ajaxStart()和.ajaxStop()全局事件:
$.ajax({
    global:false,
});
二.錯誤處理
Ajax非同步提交時,不可能所有情況都是成功完成的,也有因為代碼非同步文件錯誤、網路錯誤導致提交失敗的。這時,我們應該把錯誤報告出來,提醒用戶重新提交或提示開發者進行修補。
在之前高層封裝中是沒有回調錯誤處理的,比如$.get()、$.post()和.load()。所以,早期的方法通過全局.ajaxError()事件方法來返回錯誤信息。而在jQuery1.5之後,可以通過連綴處理使用局部.error()方法即可。而對於$.ajax()方法,不但可以用這兩種方法,還有自己的屬性方法error:function(){}
$('.ajax_btn').on('click',function(){
    $.ajax({
        type:"GET",
        url:"ajax.php",
        data:{
            url:"snail",
        },
        success:function(response,status,xhr){
            console.log(response);
        },
        error:function(xhr,errorText,errorStatus){
            console.log(xhr);
            console.log(errorText);
            console.log(errorStatus);
        }
    })
});
// $.post()使用連綴.error()方法提示錯誤,連綴方法將被.fail()取代
$.post('ajax.php').error(function(xhr,status,info){
    console.log(xhr.status+':'+xhr.statusText);
    console.log(status+':'+info);
});
// $.post()使用全局.ajaxError()事件提示錯誤
$(document).ajaxError(function(event,xhr,settings,infoError){
    alert(xhr.status+':'+xhr.statusText);
    alert(settings+':'+info);
});
三.請求全局事件
jQuery對於Ajax操作提供了很多全局事件方法,.ajaxStart()、.ajaxStop()、.ajaxError()等事件方法。他們都屬於請求時觸發的全局事件,除了這些,還有一些其他全局事件:
.ajaxSend(),沒有對應的局部方法,只有屬性beforeSend,請求發送之前要綁定的函數。
.ajaxComplete(),對應一個局部方法:.complete(),請求完成後註冊一個回調函數。
.ajaxSuccess(),對應一個局部方法:.success(),請求成功完成時執行。
註意:全局事件方法是所有Ajax請求都會觸發到,並且只能綁定在document上。而局部方法,則針對某個Ajax。對於一些全局事件方法的參數,大部分為對象,而這些對象有哪些屬性或方法能調用,可以通過遍歷方法得到。
// 遍歷settings對象的屬性
$(document).ajaxSuccess(function(event,xhr,settings){
    for(var i in settings){
        console.log(i);
    }
});
// $.post()請求完成的局部方法.complete()
$.post().complete(function(xhr,status){
    console.log("完成!");
})
// $.post()請求完成的全局方法.ajaxComplete()
$(document).ajaxComplete(function(event,xhr,setting){
    console.log("完成!");
})
// $.ajax()方法,可以直接通過屬性設置即可。
$.ajax({
    type:"POST",
    url:"ajax.php",
    success:function(data,status,xhr){},
    complete:function(xhr,status){},
    beforeSend:function(xhr,settints){}
})

註意:在jQuery1.5版本以後,使用.success()、.error()和.complete()連綴的方法,可以用.done()、.fail()和.always()取代。

四.JSON和JSONP
如果在同一個域下,$.ajax()方法只要設置dataType屬性即可載入JSON文件。而在非同域下,可以使用JSONP,但也是有條件的。
如果想跨域操作文件的話,我們就必須使用JSONP。JSONP(JSON with Padding)是一個非官方的協議,它允許在伺服器端集成Script tags返回至客戶端,通過javascriptcallback的形式實現跨域訪問(這僅僅是JSONP簡單的實現形式)。
$.ajax({
    type:"GET",
    dataType:"jsonp",
    success:function(data,status,xhr){}
})
五.jqXHR對象
在之前,我們使用了局部方法:.success()、.complete()和.error()。這三個局部方法並不是XMLHttpRequest對象調用的,而是$.ajax()之類的全局方法返回的對象調用的。這個對象,就是jqXHR對象,它是原生對象XHR的一個超集。
註意:如果使用jqXHR對象的話,那麼建議用.done()、.always()和.fail()代 替.success()、.complete()和.error()。以為在未來版本中,很可能將這三種方法廢棄取消。
使用jqXHR的連綴方式比$.ajax()的屬性方式有三大好處:
1.可連綴操作,可讀性大大提高;
2.可以多次執行同一個回調函數;
3.為多個操作指定回調函數;

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 這是我寫的關於列表組件的第4篇博客。前面的相關文章有: 1. 列表組件抽象(1)-概述 2. 列表組件抽象(2)-listViewBase說明 3. 列表組件抽象(3)-分頁和排序管理說明 本文介紹列表組件中我對滾動列表及滾動分頁的實現思路。 在pc端,通過滾動進行翻頁的需求非常常見;移動端也是,只 ...
  • 在做網頁相容時 發現在ie8下的input內用padding失效 為了達到居中文字的效果 使用line-height可以解決問題 ...
  • 前端是一個承上啟下的職位,正因為其位置的特殊性導致其必須瞭解設計和後臺的一些基本知識。本文並非教大家如何取代設計的工作,而是講解前端如何更快更便捷的實現一些簡單的設計任務,在沒有設計師的情況下如何利用工具解決UI呈現的問題,讓工作事半功倍。 Photoshop使用 大多數前端工程師都有過切圖的經歷, ...
  • QRCode.js 是一個用於生成二維碼圖片的插件。 github地址 QRCode.js 是一個用於生成二維碼圖片的插件。 github地址 github地址 github地址 github地址 線上實例 實例預覽 基礎示例 實例預覽 API 介面 使用方法 載入 JavaScript 文件 <s ...
  • [1]拖放源 [2]拖放目標 [3]dataTransfer對象 [4]改變游標 ...
  • 偽對象選擇器包含三種,分別為: E::selection E::after E::before 其中before和after必須與content結合使用,如果content想用幾何圖形要加 \ 進行轉義,content裡面的內容相當於文字,可以通過color改變顏色,font-size改變大小 等等 ...
  • html, xhtml和xml 1.定義及特點: 1) html:Hyper Text Markup Language 超文本標記語言 是最早寫網頁的語言,但編碼不規範,主要用於控制數據的顯示和外觀。語法較為鬆散,不嚴謹的web語言; ① 簡易性:超級文本標記語言版本升級採用超集方式,從而更加靈活方 ...
  • 就是準備跟著W3C上的教程過一遍HTML啦,邊看邊記錄更便於理解記憶吧~ 1、屬性 HTML 標簽可以擁有屬性。屬性提供了有關 HTML 元素的更多的信息。屬性總是以名稱/值對的形式出現,比如:name="value"。 屬性總是在 HTML 元素的開始標簽中規定。 屬性例子 1: <h1> 定義標 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...