AJAX 是一個首字母縮寫,代表異步 JavaScript 和 XML,這一技術幫助我們在沒有瀏覽頁面刷新的情況下從服務器加載數(shù)據(jù)。
如果你對 AJAX 比較陌生,我建議你在學習本教程之前先去瀏覽一下我們的 Ajax 教程。
JQuery 是一個偉大的工具,提供了一組豐富的 AJAX 方法來開發(fā)下一代 web 應用程序。
使用 jQuery AJAX 來下載任何靜態(tài)或動態(tài)的數(shù)據(jù)都是非常簡單的。jQuery 提供了 load() 方法來實現(xiàn)這一功能 ——
這是 load() 方法的簡單語法 ——
[selector].load( URL, [data], [callback] );
這是所有參數(shù)的描述 ——
URL —— 服務器端 URL 向發(fā)送請求的一端提供資源??赡苁且粋€ CGI、ASP、JSP、PHP 腳本,能夠動態(tài)生成數(shù)據(jù)或數(shù)據(jù)庫。
data —— 這一可選參數(shù)代表了一個對象,它的屬性被序列化到要傳遞給請求端的正確編碼的參數(shù)。如果指定了,那么請求是由 POST 方法實現(xiàn)的。如果省略了,那么請求是由 GET 方法實現(xiàn)的。
考慮下面這個帶有一小段 jQuery 編碼的 HTML 文件 ——
<html>
<head>
<title>The jQuery Example</title>
<script type="text/javascript" src="https://atts.w3cschool.cn/attachments/image/wk/jquery/jquery.min.js"></script>
<script type="text/javascript" language="javascript">
$(document).ready(function() {
$("#driver").click(function(event){
$('#stage').load('/jquery/result.html');
});
});
</script>
</head>
<body>
<p>Click on the button to load /jquery/result.html file ?</p>
<div id="stage" style="background-color:cc0;">
STAGE
</div>
<input type="button" id="driver" value="Load Data" />
</body>
</html>
這里 load() 啟動一個 Ajax 請求到指定的 URL /jquery/result.html 文件。加載這個文件后,所有的內(nèi)容將會被填充到 ID 為 stage 的 < div>
標簽內(nèi)。假設,我們的 /jquery/result.html
文件只有一個 HTML 行——
< h1>THIS IS RESULT...</h1>
當點擊給定的按鈕后,result.html 文件開始被加載。
有可能會出現(xiàn)返回的 JSON 字符串與你的請求不符的情況。jQuery 使用 getJSON() 函數(shù)解析返回 JSON 字符串并使結(jié)果字符串作為第一個參數(shù)以進行后續(xù)的操作對回調(diào)函數(shù)是可用的。
這是 getJSON() 方法的簡單語法 ——
[selector].getJSON( URL, [data], [callback] );
這是所有參數(shù)的描述 ——
URL —— 服務器端資源的 URL 通過 GET 方法取得聯(lián)系。
data —— 一個對象,它的屬性作為名稱/值對,用于構(gòu)造一個要被附加到 URL 上的字符串,或者預先格式化并編碼的查詢字符串。
考慮下面的帶有一小段 jQuery 編碼的 HTML 文件 ——
<html>
<head>
<title>The jQuery Example</title>
<script type="text/javascript" src="https://atts.w3cschool.cn/attachments/image/wk/jquery/jquery.min.js"></script>
<script type="text/javascript" language="javascript">
$(document).ready(function() {
$("#driver").click(function(event){
$.getJSON('/jquery/result.json', function(jd) {
$('#stage').html('<p> Name: ' + jd.name + '</p>');
$('#stage').append('<p>Age : ' + jd.age+ '</p>');
$('#stage').append('<p> Sex: ' + jd.sex+ '</p>');
});
});
});
</script>
</head>
<body>
<p>Click on the button to load result.json file ?</p>
<div id="stage" style="background-color:#eee;">
STAGE
</div>
<input type="button" id="driver" value="Load Data" />
</body>
</html>
這里 JQuery 使用 getJSON() 方法來啟動一個 Ajax 請求道指定的 URL result.json 文件中。在加載這個文件后,所有的內(nèi)容會被傳遞到回調(diào)函數(shù),最終會填充到 ID 為 stage 的 < div> 標簽內(nèi)部。假設,我們的 result.json 文件有下述 json 格式的內(nèi)容 ——
{
"name": "Zara Ali",
"age" : "67",
"sex": "female"
}
當你點擊給定的按鈕時,result.json 文件就開始加載 ——
許多情況下,你從客戶端收集輸入并把這些輸入傳遞到服務器端以做進一步處理。JQuery AJAX 使用任何可用的 Ajax 方法的 data 參數(shù),使得將收集的數(shù)據(jù)傳遞到服務器端變得容易。
這個例子解釋了怎樣將客戶端的輸入傳遞到 web 服務器腳本,它會發(fā)送相同的結(jié)果,然后我們可以輸出它 ——
<html>
<head>
<title>The jQuery Example</title>
<script type="text/javascript" src="https://atts.w3cschool.cn/attachments/image/wk/jquery/jquery.min.js"></script>
<script type="text/javascript" language="javascript">
$(document).ready(function() {
$("#driver").click(function(event){
var name = $("#name").val();
$("#stage").load('/jquery/result.php', {"name":name} );
});
});
</script>
</head>
<body>
<p>Enter your name and click on the button:</p>
<input type="input" id="name" size="40" /><br />
<div id="stage" style="background-color:cc0;">
STAGE
</div>
<input type="button" id="driver" value="Show Result" />
</body>
</html>
這是在 result.php 腳本上編寫的代碼 ——
<?php
if( $_REQUEST["name"] )
{
$name = $_REQUEST['name'];
echo "Welcome ". $name;
}
?>
現(xiàn)在你可以在給定的輸入框中鍵入任何文本,然后點擊"顯示結(jié)果"按鈕來看看你在輸入框中鍵入的內(nèi)容。
你已經(jīng)用 JQuery 了解了基本的 AJAX 概念。下表是所有的 JQuery AJAX 方法,你可以根據(jù)你的編程序要選擇你需要的方法 ——
序號 | 方法 & 描述 |
---|---|
1 |
jQuery.ajax( options )
使用一個 HTTP 請求加載一個遠程頁面。 |
2 |
jQuery.ajaxSetup( options )
為 AJAX 請求設置全局設置。 |
3 |
jQuery.get( url, [data], [callback], [type] )
使用一個 HTTP GET 請求加載一個遠程頁面。 |
4 |
jQuery.getJSON( url, [data], [callback] )
使用一個 HTTP GET 請求加載 JSON 數(shù)據(jù)。 |
5 |
jQuery.getScript( url, [callback] )
使用一個 HTTP GET 請求加載并執(zhí)行一個 JavaScript 文件。 |
6 |
jQuery.post( url, [data], [callback], [type] )
使用一個 HTTP POST 請求加載一個遠程頁面。 |
7 |
load( url, [data], [callback] )
從遠程文件加載 HTML 并把它注入到 DOM 中。 |
8 |
serialize( )
將一組輸入元素序列化一個字符串數(shù)據(jù)中。 |
9 |
serializeArray( )
像 .serialize() 方法一樣,序列化所有的表單及表單元素,但是返回 JSON 數(shù)據(jù)結(jié)構(gòu)。 |
你可以在 AJAX 調(diào)用進程的生命周期中,調(diào)用不同的 JQuery 方法。下述方法是基于不同的事件/狀態(tài)的 ——
你可以瀏覽全部的 AJAX 事件。
序號 | 方法 & 描述 |
---|---|
1 |
ajaxComplete( callback )
當一個 AJAX 請求完成后,附加一個要被執(zhí)行的函數(shù)。 |
2 |
ajaxStart( callback )
當一個 AJAX 開始并且沒有準備好的操作時,附加一個要被執(zhí)行的函數(shù)。 |
3 |
ajaxError( callback )
當一個 AJAX 請求失敗后,附加一個要被執(zhí)行的函數(shù)。 |
4 |
ajaxSend( callback )
在一個 AJAX 請求發(fā)送之前,附加一個要被執(zhí)行的函數(shù)。 |
5 |
ajaxStop( callback )
當全部的 AJAX 請求結(jié)束后,附加一個要被執(zhí)行的函數(shù)。 |
6 |
ajaxSuccess( callback )
當一個 AJAX 請求成功完成后,附加一個要被執(zhí)行的函數(shù)。 |
更多建議: