新聞中心
最近用了近兩天的時(shí)間對(duì)AJAX的知識(shí)進(jìn)行了一個(gè)梳理,覺得是時(shí)候?qū)JAX的相關(guān)知識(shí)點(diǎn)做個(gè)總結(jié)了.....這當(dāng)然也就是本篇博客的主旨了....我也不是很贊成用長篇大論來講述什么是AJAX,怎么使用AJAX,這樣我總覺得太理論化了,接受起來會(huì)有一定的難度...所以,本篇博客的另一個(gè)主旨是:從實(shí)例入手,由淺到深.....好了,直接開始入手吧

專注于為中小企業(yè)提供成都網(wǎng)站制作、成都網(wǎng)站設(shè)計(jì)服務(wù),電腦端+手機(jī)端+微信端的三站合一,更高效的管理,為中小企業(yè)信州免費(fèi)做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動(dòng)了超過千家企業(yè)的穩(wěn)健成長,幫助中小企業(yè)通過網(wǎng)站建設(shè)實(shí)現(xiàn)規(guī)模擴(kuò)充和轉(zhuǎn)變。
實(shí)例一:省份-城市的聯(lián)級(jí)下拉框
利用AJAX來獲取數(shù)據(jù)實(shí)現(xiàn)聯(lián)級(jí)下拉框,當(dāng)省份下拉框的選項(xiàng)發(fā)生變化時(shí),城市的選項(xiàng)對(duì)應(yīng)變化,效果如圖:
我們首先來實(shí)現(xiàn)后臺(tái),先將數(shù)據(jù)準(zhǔn)備好了在實(shí)現(xiàn)前臺(tái)獲取數(shù)據(jù),【考慮:當(dāng)我們頁面登錄的時(shí)候,我們需要獲取的數(shù)據(jù)】: 1).省份框中的省份; 2).因?yàn)榈卿洉r(shí)省份框的第一項(xiàng)選中,所以還需要第一個(gè)省份所對(duì)應(yīng)的城市名,好了,需求知道了,代碼就好寫了,直接貼上后臺(tái)代碼:
- protected void Page_Load(object sender, EventArgs e)
- {
- if (Request.QueryString["provid"] != null)
- {
- //首先獲取傳遞過來的參數(shù)值
- string provId = Request.QueryString["provid"].ToString();
- //查詢所有城市
- string sqlprov = "select * from Provice";
- SqlDataReader reader = DbHelperSQL.ExecuteReader(sqlprov);
- string resultProv = "";
- while (reader.Read())
- {
- string id = reader[0].ToString();
- string provName = reader[1].ToString();
- //字符串拼接,為了前臺(tái)獲取時(shí)可以切分獲取對(duì)應(yīng)數(shù)據(jù),用 '|' 來隔離 各個(gè)省份
- resultProv += "|" + string.Format("{0},{1}", id, provName);
- }
- reader.Close();
- //根據(jù)省份框的ID來獲取對(duì)應(yīng)的城市名
- string sqlcity =string.Format("select * from City where Proid='{0}'",provId);
- SqlDataReader readercity = DbHelperSQL.ExecuteReader(sqlcity);
- string resultCity = "";
- while (readercity.Read())
- {
- string cityId = readercity[1].ToString();
- string cityName = readercity[2].ToString();
- //同樣用字符串拼接 用 '|' 來隔離 同一省份 的各個(gè)城市
- resultCity += "|" + string.Format("{0},{1}", cityId, cityName);
- }
- //去除第一個(gè) '|' ,并且在最后拼接上 '&' 來區(qū)分省份和城市
- resultProv = resultProv.Substring(1) + "&";
- //最后的結(jié)果形式為【id,省份名|id2,省份名2|....&id,城市名|id2,城市名2|.....】
- string result = resultProv + resultCity.Substring(1);
- Response.Write(result);
- Response.End();
- }
- }
后臺(tái)代碼其實(shí)很簡單,就是根據(jù)傳過來的參數(shù)從數(shù)據(jù)庫獲取對(duì)應(yīng)的數(shù)據(jù),但是這里我們把獲取到得數(shù)據(jù)最后都用字符串拼接起來了,而且是有規(guī)律的拼接,這是為什么呢?其實(shí)在注釋上已經(jīng)講明了,就是為了方便前臺(tái)獲取對(duì)應(yīng)的數(shù)據(jù)了,因?yàn)槲覀兪鞘褂煤笈_(tái)返回文本形式的數(shù)據(jù),這就是為什么我們拼接字符串了。。
接下來我們來實(shí)現(xiàn)前臺(tái),前臺(tái)主要的任務(wù)就是獲取后臺(tái)返回的數(shù)據(jù),并實(shí)現(xiàn)綁定......也是分塊貼上代碼
- //實(shí)例化XmlHttpRequest對(duì)象
- var xhr = null;
- function CreateXhr() {
- if (window.ActiveXObject)
- {
- try
- {
- xhr = new ActiveXObject("Microsoft.XMLHTTP");
- }
- catch (e)
- {
- try
- {
- xhr = new ActiveXObject("Msxml2.XMLHTTP");
- }
- catch (e)
- {
- xhr = null;
- }
- }
- }
- if (window.XMLHttpRequest) {
- xhr = new XMLHttpRequest();
- }
- return xhr;
- }
當(dāng)頁面載入時(shí),實(shí)現(xiàn)省份框以及第一個(gè)省份對(duì)應(yīng)的城市框的綁定,代碼:
- //載入綁定省份
- function getLoadProv() {
- CreateXhr();
- xhr.onreadystatechange = WatchState;
- xhr.open("get", "getProvCity.aspx?provid=1&time=" + new Date());
- xhr.send(null);
- }
- //監(jiān)聽載入綁定時(shí)狀態(tài)
- function WatchState() {
- if (xhr.readyState == 4 && xhr.status == 200) {
- //1,**|2,**&1,##|2,##
- var result = xhr.responseText;
- var provs = result.split('&')[0].split('|');
- var citys = result.split('&')[1].split('|');
- //省份下拉框清空
- document.forms[0].prov.length = 0;
- //綁定省份框
- for (var i = 0; i < provs.length; i++) {
- var prov = provs[i].split(',');
- //實(shí)例化一個(gè)選項(xiàng)
- var op = new Option();
- op.value = prov[0];
- op.text = prov[1];
- document.forms[0].prov.options.add(op);
- }
- //城市下拉框清空
- document.forms[0].city.length = 0;
- //綁定城市框
- for (var j = 0; j < citys.length; j++) {
- var city = citys[j].split(',');
- var op = new Option();
- op.value = city[0];
- op.text = city[1];
- document.forms[0].city.options.add(op);
- }
- }
- }
當(dāng)省份框的選項(xiàng)發(fā)生變化時(shí)實(shí)現(xiàn)聯(lián)級(jí)變化,代碼:
- //獲取城市
- function GetCity() {
- //獲取省份框選中的值
- var provId = document.forms[0].prov.value;
- CreateXhr();
- xhr.onreadystatechange = UpdateCity;
- xhr.open("get", "getProvCity.aspx?provid=" + provId + "&time=" + new Date());
- xhr.send(null);
- }
- //修改城市下拉框內(nèi)容
- function UpdateCity() {
- if (xhr.readyState == 4 && xhr.status == 200) {
- var result = xhr.responseText;
- var citys = result.split('&')[1].split('|');
- //城市下拉框清空
- document.forms[0].city.length = 0;
- //綁定城市框
- for (var j = 0; j < citys.length; j++) {
- var city = citys[j].split(',');
- var op = new Option();
- op.value = city[0];
- op.text = city[1];
- document.forms[0].city.options.add(op);
- }
- }
前臺(tái)html代碼:
- html
#p#
實(shí)例二:利用$.get,$.post方法獲取當(dāng)前時(shí)間
$.get():
定義:get()方法通過遠(yuǎn)程HTTP GET請求載入信息
語法:$(selector).get(url,data,success(response,status,xhr),dataType)
參數(shù)
url:必須,請求發(fā)送的地址。
data:可選,發(fā)送到服務(wù)器的數(shù)據(jù)。
success:可選,請求成功時(shí)運(yùn)行的函數(shù)
1).response:包含結(jié)果的數(shù)據(jù)
2).status:包含請求的狀態(tài)
3).xhr:包含XmlHttpRequest對(duì)象
dataType:服務(wù)器響應(yīng)的數(shù)據(jù)類型,默認(rèn)將智能判斷
$.post()
定義:post()方法通過遠(yuǎn)程HTTP Post請求載入信息
語法:$(selector).post(url,data,success(data,status,jqXHR),dataType)
參數(shù)
url:必須,請求發(fā)送的地址。
data:可選,發(fā)送到服務(wù)器的數(shù)據(jù)。
success:可選,請求成功時(shí)運(yùn)行的函數(shù)
1).data:包含結(jié)果的數(shù)據(jù)
2).status:包含請求的狀態(tài)
3).jqXHR:包含XmlHttpRequest對(duì)象
dataType:服務(wù)器響應(yīng)的數(shù)據(jù)類型,默認(rèn)將智能判斷
由于實(shí)例相當(dāng)簡單,直接上所有代碼:
- protected void Page_Load(object sender, EventArgs e)
- {
- string time = "";
- //Get
- if (Request.QueryString["time"]!=null)
- {
- time = "Get:"+ Request.QueryString["time"].ToString();
- }
- //Post
- if (Request.Form["time"] != null)
- {
- time = "Post:" + Request.Form["time"].ToString();
- }
- Response.Write(time + " 現(xiàn)在:" + DateTime.Now.ToString());
- Response.End();
- }
前臺(tái)獲取時(shí)間
#p#
實(shí)例三:使用$.ajax實(shí)現(xiàn)獲取后臺(tái)數(shù)據(jù),后臺(tái)返回?cái)?shù)據(jù)格式為text,json,xml三種類型
$.ajax()
定義:ajax()方法通過遠(yuǎn)程HTTP請求載入信息
語法:Jquery.ajax([settings])
常用參數(shù)[settings]--用于配置Ajax的鍵值對(duì)請求
url:必須,請求發(fā)送的地址
type: 請求方式
data:可選,發(fā)送到服務(wù)器的數(shù)據(jù)
success:可選,請求成功時(shí)運(yùn)行的函數(shù)
1).data:包含結(jié)果的數(shù)據(jù)
2).status:包含請求的狀態(tài)
3).jqXHR:包含XmlHttpRequest對(duì)象
dataType:服務(wù)器響應(yīng)的數(shù)據(jù)類型,默認(rèn)將智能判斷
其余參數(shù)詳情參見:http://www.w3school.com.cn/jquery/ajax_ajax.asp
1>.test格式 --獲取時(shí)間的時(shí),分,秒
后臺(tái)代碼:
- public partial class textData : System.Web.UI.Page
- {
- protected void Page_Load(object sender, EventArgs e)
- {
- string hour = DateTime.Now.Hour.ToString();
- string minute = DateTime.Now.Minute.ToString();
- string second = DateTime.Now.Second.ToString();
- string textStr = hour + "/" + minute + "/" + second;
- Response.Write(textStr);
- Response.End();
- }
- }
前臺(tái)獲取代碼:
2>.Json格式 --獲取時(shí)間的時(shí),分,秒
我們需要在后臺(tái)返回Json格式的數(shù)據(jù),添加一個(gè)dll鏈接庫,類似.Net中處理Json數(shù)據(jù)的API ,如圖:
Json格式后臺(tái)代碼:
- Json后臺(tái)
- //添加引用
- using Newtonsoft.Json;
- namespace AJAX.Json
- {
- public partial class jsonData : System.Web.UI.Page
- {
- protected void Page_Load(object sender, EventArgs e)
- {
- string hour = DateTime.Now.Hour.ToString();
- string minute = DateTime.Now.Minute.ToString();
- string second = DateTime.Now.Second.ToString();
- //匿名類型
- var time = new { h = hour, m = minute, s = second };
- //轉(zhuǎn)Json格式
- var jsonStr = JsonConvert.SerializeObject(new[] { time });
- Response.Write(jsonStr);
- Response.End();
- }
- }
- }
Json格式前臺(tái)代碼:
3>.xml格式--獲取用戶名,出生年月
Xml格式后臺(tái)代碼:
- //添加引用
- using System.Xml;
- namespace AJAX.Ajax_Xml
- {
- public partial class XmlData : System.Web.UI.Page
- {
- protected void Page_Load(object sender, EventArgs e)
- {
- string name = "zld";
- string birth = "1990-1-8";
- //第一種:直接字符串拼接
- string xmlStr = "
"; " + name + " " + birth + " - //第二種:XmlDocument創(chuàng)建
- //創(chuàng)建文檔
- XmlDocument xmlDocument = new XmlDocument();
- //文檔頭聲明
- XmlDeclaration xd = xmlDocument.CreateXmlDeclaration("1.0","utf-8",null);
- xmlDocument.AppendChild(xd);
- //添加根節(jié)點(diǎn)
- XmlElement root = xmlDocument.CreateElement("root");
- xmlDocument.AppendChild(root);
- //給根節(jié)點(diǎn)添加子節(jié)點(diǎn)
- XmlElement node1 = xmlDocument.CreateElement("Name");
- node1.InnerText = name;
- root.AppendChild(node1);
- XmlElement node2 = xmlDocument.CreateElement("Birth");
- node2.InnerText = birth;
- root.AppendChild(node2);
- //獲取節(jié)點(diǎn)元素
- string xmlStr2 = xmlDocument.OuterXml;
- Response.Write(xmlStr2);
- Response.End();
- }
- }
- }
Xml格式前臺(tái)代碼:


咨詢
建站咨詢