jQuery.ajax的使用方法
通過 HTTP 請求載入遠端資料。
jQuery 底層 AJAX 實現。簡單易用的高層實現見 $.get, $.post 等。$.ajax() 返回其建立的 XMLHttpRequest 物件。大多數情況下你無需直接操作該函式,除非你需要操作不常用的選項,以獲得更多的靈活性。
最簡單的情況下,$.ajax()可以不帶任何引數直接使用。
注意,所有的選項都可以通過$.ajaxSetup()函式來全域性設定。
回撥函式
如果要處理$.ajax()得到的資料,則需要使用回撥函式。beforeSend、error、dataFilter、success、complete。
- beforeSend 在傳送請求之前呼叫,並且傳入一個XMLHttpRequest作為引數。
- error 在請求出錯時呼叫。傳入XMLHttpRequest物件,描述錯誤型別的字串以及一個異常物件(如果有的話)
- dataFilter 在請求成功之後呼叫。傳入返回的資料以及"dataType"引數的值。並且必須返回新的資料(可能是處理過的)傳遞給success回撥函式。
- success 當請求之後呼叫。傳入返回後的資料,以及包含成功程式碼的字串。
- complete 當請求完成之後呼叫這個函式,無論成功或失敗。傳入XMLHttpRequest物件,以及一個包含成功或錯誤程式碼的字串。
資料型別
$.ajax()函式依賴伺服器提供的資訊來處理返回的資料。如果伺服器報告說返回的資料是XML,那麼返回的結果就可以用普通的XML方法或者jQuery的選擇器來遍歷。如果見得到其他型別,比如HTML,則資料就以文字形式來對待。
通過dataType選項還可以指定其他不同資料處理方式。除了單純的XML,還可以指定 html、json、jsonp、script或者text。
其中,text和xml型別返回的資料不會經過處理。資料僅僅簡單的將XMLHttpRequest的responseText或responseHTML屬性傳遞給success回撥函式,
注意,我們必須確保網頁伺服器報告的MIME型別與我們選擇的dataType所匹配。比如說,XML的話,伺服器端就必須宣告 text/xml 或者 application/xml 來獲得一致的結果。
如果指定為html型別,任何內嵌的JavaScript都會在HTML作為一個字串返回之前執行。類似的,指定script型別的話,也會先執行伺服器端生成JavaScript,然後再把指令碼作為一個文字資料返回。
如果指定為json型別,則會把獲取到的資料作為一個JavaScript物件來解析,並且把構建好的物件作為結果返回。為了實現這個目的,他首先嚐試使用JSON.parse()。如果瀏覽器不支援,則使用一個函式來構建。JSON資料是一種能很方便通過JavaScript解析的結構化資料。如果獲取的資料檔案存放在遠端伺服器上(域名不同,也就是跨域獲取資料),則需要使用jsonp型別。使用這種型別的話,會建立一個查詢字串引數 callback=? ,這個引數會加在請求的URL後面。伺服器端應當在JSON資料前加上回撥函式名,以便完成一個有效的JSONP請求。如果要指定回撥函式的引數名來取代預設的callback,可以通過設定$.ajax()的jsonp引數。
注意,JSONP是JSON格式的擴充套件。他要求一些伺服器端的程式碼來檢測並處理查詢字串引數。更多資訊可以參閱 最初的文章。
如果指定了script或者jsonp型別,那麼當從伺服器接收到資料時,實際上是用了<script>標籤而不是XMLHttpRequest物件。這種情況下,$.ajax()不再返回一個XMLHttpRequest物件,並且也不會傳遞事件處理函式,比如beforeSend。
傳送資料到伺服器
預設情況下,Ajax請求使用GET方法。如果要使用POST方法,可以設定type引數值。這個選項也會影響data選項中的內容如何傳送到伺服器。
data選項既可以包含一個查詢字串,比如 key1=value1&key2=value2 ,也可以是一個對映,比如 {key1: 'value1', key2: 'value2'} 。如果使用了後者的形式,則資料再傳送器會被轉換成查詢字串。這個處理過程也可以通過設定processData選項為false來回避。如果我們希望傳送一個XML物件給伺服器時,這種處理可能並不合適。並且在這種情況下,我們也應當改變contentType選項的值,用其他合適的MIME型別來取代預設的 application/x-www-form-urlencoded 。
高階選項
global選項用於阻止響應註冊的回撥函式,比如.ajaxSend,或者ajaxError,以及類似的方法。這在有些時候很有用,比如傳送的請求非常頻繁且簡短的時候,就可以在ajaxSend裡禁用這個。更多關於這些方法的詳細資訊,請參閱下面的內容。
如果伺服器需要HTTP認證,可以使用使用者名稱和密碼可以通過username和password選項來設定。
Ajax請求是限時的,所以錯誤警告被捕獲並處理後,可以用來提升使用者體驗。請求超時這個引數通常就保留其預設值,要不就通過jQuery.ajaxSetup來全域性設定,很少為特定的請求重新設定timeout選項。
預設情況下,請求總會被髮出去,但瀏覽器有可能從他的快取中調取資料。要禁止使用快取的結果,可以設定cache引數為false。如果希望判斷資料自從上次請求後沒有更改過就報告出錯的話,可以設定ifModified為true。
scriptCharset允許給<script>標籤的請求設定一個特定的字符集,用於script或者jsonp類似的資料。當指令碼和頁面字符集不同時,這特別好用。
Ajax的第一個字母是asynchronous的開頭字母,這意味著所有的操作都是並行的,完成的順序沒有前後關係。$.ajax()的async引數總是設定成true,這標誌著在請求開始後,其他程式碼依然能夠執行。強烈不建議把這個選項設定成false,這意味著所有的請求都不再是非同步的了,這也會導致瀏覽器被鎖死。
$.ajax函式返回他建立的XMLHttpRequest物件。通常jQuery只在內部處理並建立這個物件,但使用者也可以通過xhr選項來傳遞一個自己建立的xhr物件。返回的物件通常已經被丟棄了,但依然提供一個底層介面來觀察和操控請求。比如說,呼叫物件上的.abort()可以在請求完成前掛起請求。
相關文章
- jQuery.ajaxjQuery
- jQuery.ajax()jQuery
- Ashx中使用jQuery.Ajax方法的一些記錄jQuery
- FMDatabase 的使用方法Database
- ****phpredis的使用方法PHPRedis
- ScaleType的使用方法
- docker的使用方法Docker
- Markdown的使用方法
- find 的命令的使用方法。
- React 路由的使用方法React路由
- docker的基本使用方法Docker
- bootstrap Table的使用方法boot
- BeautifulSoup模組的使用方法
- Analyze 命令的使用方法
- axios baseURL 的使用方法iOS
- Vue元件的基本使用方法Vue元件
- Jquery 和 Ajax的 使用方法jQuery
- jquery 中 $.map 的使用方法jQuery
- Vue-Router的使用方法Vue
- YogaKit中 position 的使用方法
- CSS的三種使用方法CSS
- react中hooks的使用方法ReactHook
- html表單的使用方法HTML
- Unity Plugins的使用方法UnityPlugin
- 關於InputMethodManager的使用方法
- SQL*Loader的使用方法SQL
- SQL Case when 的使用方法SQL
- vi 的使用方法(web摘抄)Web
- Oracle中“HINT”的使用方法Oracle
- spotlight on oracle的使用方法Oracle
- SQL LOADER的使用方法SQL
- SQL CONVERT的使用方法SQL
- UIBezierPath的使用方法UI
- Oracle中sequence的使用方法Oracle
- github的簡單使用方法Github
- VNC viewer使用方法,win10VNC使用方法VNCViewWin10
- 遠端會議的使用方法
- java中json的使用方法JavaJSON