jQuery 學(xué)習(xí)第五課 Ajax 使用說明
jQuery提供了若干個ajax函數(shù),他們大同小異,只是為了處理不同類型的數(shù)據(jù)而分開來。最簡單的是get(url,parameters,callback),這個函數(shù)發(fā)起一個GET請求,將服務(wù)器返回的數(shù)據(jù)傳遞給callback處理。 下面的例子實現(xiàn)了當鼠標懸浮在超鏈接上的時候,就發(fā)起一個ajax請求,從服務(wù)器端返回關(guān)于此超鏈接的更多介紹的效果。先看服務(wù)器端代碼,新建一個ajaxload.ashx,僅作為示例,獲得查詢參數(shù)為word的值,并返回:
<%@ WebHandler Language="C#" Class="ajaxload" %>
using System;
using System.Web;
public class ajaxload : IHttpHandler {
public void ProcessRequest (HttpContext context) {
context.Response.ContentType = "text/plain";
string word = context.Request.Params["word"];
context.Response.Write(string.Format("<p style='color:red;'>More intorduction of {0} is here....</p>",word));
}
public bool IsReusable {
get {
return false;
}
}
}
前臺代碼如下:
<head>
<title>Ajax Text</title>
<script type="text/javascript" src="jquery-1.3.2.js"></script>
<script type="text/javascript">
$(function() {
$('a').hover(function(event) {
$.get('ajaxload.ashx', { word: $(event.target).html() }, function(data) {
$('#result').html(data);
});
}, function() {
$('#result').html("");
});
});
</script>
</head>
<body>
<a href="javascript:void(0)">China</a><br />
<a href="javascript:void(0)">USA</a><br />
<a href="javascript:void(0)">Japan</a><br />
<a href="javascript:void(0)">中 國</a><br />
<div id="result">
</div>
</body>
將鼠標依次滑過Japan和中國,在firebug中可以清楚的看到發(fā)起了兩次get請求。jquery將參數(shù)編碼后傳遞給服務(wù)器。在jQuery的幫助下,ajax如此簡單。

在此例中,服務(wù)器端返回了一個html片段,前臺所作的工作就是把這個html片段插入到頁面中去,實際上,服務(wù)器端返回的可以是任何格式的數(shù)據(jù),只要在前臺做相應(yīng)的處理即可。在各種數(shù)據(jù)格式中,尤為常用的是JSON格式。關(guān)于JSON格式本身,本文不多做介紹。簡單說,JSON格式非常類似于javascript中的對象字面量。{}表示一個對象,[]表示一個數(shù)組。
下面來實現(xiàn)一個三級聯(lián)動下拉菜單。先看下最終效果:
這是一個捆綁銷售商品選擇器,先選擇第一個屬性Game,再選擇Server,最后選擇Amount。服務(wù)器端如何從數(shù)據(jù)庫查找到合適的數(shù)據(jù)并且如何將其序列化成JSON數(shù)據(jù)不是本文討論的重點。服務(wù)器端能響應(yīng)如下請求,返回的數(shù)據(jù)也能看到,這些是JSON的典型格式:
第一個請求返回Game的列表,第二個請求返回Server的列表,第三個稍微復(fù)雜一點,返回了很多信息,其中DisplayName是用來顯示在列表中的,ID是列表的value值,其余的沒有用到。例如:
Amount:<select name="SelectAmount" id="SelectAmount"><option value="45">10 Mil</option>
<option value="46">20 Mil</option></select>
下面介紹前臺的實現(xiàn)。下拉列表框的HTML代碼如下:
<div id="bannerLivechat_content">
<p>
Game:<select id="SelectGame"></select></p>
<p>
Server:<select id="SelectServer"></select></p>
<p>
Amount:<select id="SelectAmount" name="SelectAmount"></select></p>
<p>
<asp:Button ID="ButtonFasyBuy" CssClass="btn_default" runat="server" Text="BuyNow"
OnClick="ButtonFasyBuy_Click" />
</p>
</div>
為三個下拉列表寫好事件處理函數(shù),首先要加載Game列表:
function LoadGame() {
$.getJSON('FastBuy.ashx', function(data) {
var sel = $('#SelectGame')[0];
sel.innerHTML = "";
$.each(data, function(entryIndex, entry) {
var op = new Option(entry);
sel.options.add(op);
});
$('#SelectGame')[0].selectedIndex = 0;
var game = $('#SelectGame').val();
LoadServer(game);
});
}
首先清空當前列表,$.each函數(shù)能夠遍歷第一個參數(shù)中的每個值,依次調(diào)用第二個參數(shù)的函數(shù)。并把值傳給entry參數(shù)。此時jQuery已經(jīng)把JSON數(shù)據(jù)解析成javascript對象,這里是一個字符串的數(shù)組。 function LoadServer(game) {
$.getJSON('FastBuy.ashx',{Game:game},function(data) {
var sel = $('#SelectServer')[0];
sel.innerHTML = "";
$.each(data, function(entryIndex, entry) {
var op = new Option(entry);
sel.options.add(op);
});
$('#SelectServer')[0].selectedIndex = 0;
LoadAmount(game, $('#SelectServer').val());
});
}
加載Server數(shù)據(jù)的過程是類似的。
function LoadAmount(game, server) {
$.getJSON('FastBuy.ashx', {Game:game,Server:server}, function(data) {
var sel = $('#SelectAmount')[0];
sel.innerHTML = "";
$.each(data, function(entryIndex, entry) {
var op = new Option(entry['AmountAttr'], entry['ID']);
sel.options.add(op);
});
});
}
最后是加載Amount,這里稍微有一點不同,此時data中的數(shù)據(jù)不是簡單的字符串了,而是一個有屬性的對象,可以用entry[‘ID‘]這樣的表達式來獲取表達式。在這個例子中,entry[‘ID‘]就是一個簡單的數(shù)字了。當然它完全可以是另一個復(fù)雜的對象或者數(shù)組,依服務(wù)器返回的JSON數(shù)據(jù)而定。
有了這些準備工作,我們只要在ready函數(shù)中為下拉列表注冊下處理函數(shù)了:
$(document).ready(function() {
$('#SelectServer').change(function() {
LoadAmount($('#SelectGame').val(), $('#SelectServer').val());
});
$('#SelectGame').change(function() {
LoadServer($('#SelectGame').val());
});
LoadGame();
});
至此,一個三級聯(lián)動下拉單完成了。
jQuery還有一個$.post函數(shù),用法和get一樣,只是它發(fā)起的是post請求。
相關(guān)文章
jQuery HTML設(shè)置內(nèi)容和屬性操作實例分析
這篇文章主要介紹了jQuery HTML設(shè)置內(nèi)容和屬性操作,結(jié)合實例形式分析了jQuery HTML設(shè)置內(nèi)容和屬性相關(guān)函數(shù)與操作注意事項,需要的朋友可以參考下2020-05-05
jquery 鍵盤事件 keypress() keydown() keyup()用法總結(jié)
在本篇文章里小編給各位整理的是關(guān)于jquery 鍵盤事件 keypress() keydown() keyup()用法總結(jié)以及相關(guān)實例,需要的朋友們學(xué)習(xí)下。2019-10-10
jQuery學(xué)習(xí)筆記(2)--用jquery實現(xiàn)各種模態(tài)提示框代碼及項目構(gòu)架
想實現(xiàn)一個模態(tài)的框框,找了很多的jquery插件,都沒有碰到自己滿意的于是自己摸索了一個,接下來為大家介紹下實現(xiàn)的思路及代碼,希望對你有所幫助2013-04-04
jQuery中slidedown與slideup方法用法示例
這篇文章主要介紹了jQuery中slidedown與slideup方法用法,結(jié)合實例形式分析了jQuery基于slidedown與slideup方法實現(xiàn)頁面元素展開與折疊的實現(xiàn)技巧,需要的朋友可以參考下2016-09-09

