JQuery中的Ajax詳解
阿新 • • 發佈:2019-01-05
淺談JQuery中的AJax使用
在切入正題之前,我希望大家能帶著問題去閱讀,比如:jQuery中AJax有哪些???
我們都知道,JQuery對AJax進行了封裝,但是你知道它究竟分成了幾種封裝,每種封裝的內容和用法又是什麼嗎??
好了,帶著這些問題往下看,希望我的淺淺的認識能夠幫到和我一樣曾經困惑的人…
一、3層封裝概述
1. 第一層,也是最底層的封裝方法:$.ajax()
2. 第二層,我們平時使用頻率最高的一層:load()、$.get()、$.post()
3. 第三層,我們會在有些特殊情況下使用$.getScript()、$.getJSON()
二、詳情分述
首先我們要說是最常用的一層,也就是第二層。
1) load()
作用:能載入遠端HTML程式碼並插入到DOM中。
用法:load(url, [data], [callback])
引數解析:
1.url: string,請求html的URL地址
2.data(可選): object,傳送至伺服器的資料
3.callback(可選): function, 請求完成時 的回撥函式,無論請求成功或者失敗
用例1:載入HTML文件
$(function() {
$(".className" ).load("test.html");
})
用例2:篩選載入的html文件
$(function() {
//divName是test.html中一個div的類名,使用id用#
$(".className").load("test.html .divName")
})
用例3:請求方式
//load方法會根據引數決定請求的方式,如果沒有引數面採用GET方式、有引數採用POST方式、
$(function() {
$(".className" ).load("test.php", {"username" : "admin", "password" : "pwd"},
function()
{
//TODO
})
}
})
用例4:回撥引數
//在回撥函式中執行載入完成之後的操作、
$(function() {
$(".className").load("test.php", {...},
function(responseText, textStatus, XMLHttpRequest)
{
//responseText: 請求返回的內容
//textStatus: 請求狀態:success、error、 motmodified、timeout 4種
//XMLHttpRequest: XMLHttpRequest物件
});
})
注意:在load方法中,無論ajax請求是否成功,只要請求完成,回撥函式就會被觸發。
2) $.get() 和 $.post()
提醒:$.get() 和 $.post()方法都是JQuery中的全域性函式。
作用:通過GET方式來進行非同步請求
用法:$.get(url, [data], [callback], [type])
引數解析:
前三個引數用法與load()方法一樣
type(可選): string, 伺服器返回資料的格式,包括 xml、html、script、json、text、default
用例1:與load的回撥函式不同
$(function() {
$(".className").click(function() {
$.get("getTest.php", {"username" : "admin", "password" : "pws"},
function(data, textStatus) {
//注意:get的回撥函式只有兩個引數,而且只有當資料成功返回之,才會呼叫,與load方法不同
//data: 返回的內容(可以是:XML、JSON、html片段)
//textStatus: 請求狀態(success、error、notmodified、timeout)
})
})
})
用例2:post()方法
補充: 它與$.get()的結構和使用方式都相同,不過它們之間仍然有區別:
1)GET請求會將引數跟在url後面,明文傳遞;而POST請求則是最為HTTP訊息的實體內容傳送給文字伺服器
2)GET方式對傳遞的資料大小限制(通常不同大於2kb),而使用post方式傳遞,資料量要比get大的多(理論上不受限制)
3)GET方式請求的資料會被瀏覽器快取起來,因此其他人就可以從瀏覽器的歷史記錄中讀取到資料,例如賬號和密碼等。
4)GET方式和POST方式傳遞的資料在伺服器端的獲取方式也不同。