AJAX 隨記
更新時(shí)間:2009年06月01日 00:57:57 作者:
使用AJAX可以提供無頁(yè)面刷新便可以從后臺(tái)更新頁(yè)面數(shù)據(jù),因此可以做出類似桌面應(yīng)用的效果,但是每用一次AJAX便會(huì)用到大量的Javascript語(yǔ)句,今天我把整理了一下,使它變得結(jié)構(gòu)化一些。
首先是一個(gè)創(chuàng)建AJAX的函數(shù):
var http_request=null;
function create_ajax(){
http_request = false;
//開始初始化XMLHttpRequest對(duì)象
if(window.XMLHttpRequest) { //Mozilla 瀏覽器
http_request = new XMLHttpRequest();
if (http_request.overrideMimeType) {//設(shè)置MiME類別
http_request.overrideMimeType('text/xml');
}
}
else if (window.ActiveXObject) { // IE瀏覽器
try {
http_request = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try {
http_request = new ActiveXObject("Microsoft.XMLHTTP");
} catch (e) {}
}
}
if (!http_request) { // 異常,創(chuàng)建對(duì)象實(shí)例失敗
window.alert("不能創(chuàng)建XMLHttpRequest對(duì)象實(shí)例.");
return false;
}
}
然后是調(diào)用這個(gè)函數(shù)來處理AJAX
var obj1;
function get_ajax(url,obj) {//初始化、指定處理函數(shù)、發(fā)送請(qǐng)求的函數(shù)
obj1=obj;
create_ajax();
http_request.onreadystatechange =processobj; // 確定發(fā)送請(qǐng)求的方式和URL以及是否同步執(zhí)行下段代碼
http_request.open("POST", url, true);
http_request.send(null);
}
function processobj(){
document.getElementById(obj1).innerHTML="Loading...";
if (http_request.readyState == 4) { // 判斷對(duì)象狀態(tài)
if (http_request.status == 200) { // 信息已經(jīng)成功返回,開始處理信息
document.getElementById(obj1).innerHTML=http_request.responseText;
} else { //頁(yè)面不正常
document.getElementById(obj1).innerHTML="loading error.";
}
}
}
以上就是AJAX的主體,再在你需要用AJAX的頁(yè)面把這段Javascript包含進(jìn)去,就可以方便的調(diào)用了:
<script type="text/javascript" src="ajax.js" src="ajax.js" ></script>
Welcome.
<div id="d1" onclick="get_ajax('ajax/get1.jsp','d1');">d1</div>
<div id="d2" onclick="get_ajax('ajax/get2.jsp','d2');">d2</div>
<div id="a">d2</div>
'ajax/get1.jsp'和'ajax/get2.jsp',是兩個(gè)后臺(tái)獲取數(shù)據(jù)的頁(yè)面,這樣,一點(diǎn)擊d1,get1.jsp就會(huì)被動(dòng)態(tài)的加載進(jìn)來,非常方便,當(dāng)然這只是一個(gè)最基本的功能的模型,還可以在上面加上很多功能,大家自由發(fā)揮吧。
復(fù)制代碼 代碼如下:
var http_request=null;
function create_ajax(){
http_request = false;
//開始初始化XMLHttpRequest對(duì)象
if(window.XMLHttpRequest) { //Mozilla 瀏覽器
http_request = new XMLHttpRequest();
if (http_request.overrideMimeType) {//設(shè)置MiME類別
http_request.overrideMimeType('text/xml');
}
}
else if (window.ActiveXObject) { // IE瀏覽器
try {
http_request = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try {
http_request = new ActiveXObject("Microsoft.XMLHTTP");
} catch (e) {}
}
}
if (!http_request) { // 異常,創(chuàng)建對(duì)象實(shí)例失敗
window.alert("不能創(chuàng)建XMLHttpRequest對(duì)象實(shí)例.");
return false;
}
}
然后是調(diào)用這個(gè)函數(shù)來處理AJAX
復(fù)制代碼 代碼如下:
var obj1;
function get_ajax(url,obj) {//初始化、指定處理函數(shù)、發(fā)送請(qǐng)求的函數(shù)
obj1=obj;
create_ajax();
http_request.onreadystatechange =processobj; // 確定發(fā)送請(qǐng)求的方式和URL以及是否同步執(zhí)行下段代碼
http_request.open("POST", url, true);
http_request.send(null);
}
function processobj(){
document.getElementById(obj1).innerHTML="Loading...";
if (http_request.readyState == 4) { // 判斷對(duì)象狀態(tài)
if (http_request.status == 200) { // 信息已經(jīng)成功返回,開始處理信息
document.getElementById(obj1).innerHTML=http_request.responseText;
} else { //頁(yè)面不正常
document.getElementById(obj1).innerHTML="loading error.";
}
}
}
以上就是AJAX的主體,再在你需要用AJAX的頁(yè)面把這段Javascript包含進(jìn)去,就可以方便的調(diào)用了:
復(fù)制代碼 代碼如下:
<script type="text/javascript" src="ajax.js" src="ajax.js" ></script>
Welcome.
<div id="d1" onclick="get_ajax('ajax/get1.jsp','d1');">d1</div>
<div id="d2" onclick="get_ajax('ajax/get2.jsp','d2');">d2</div>
<div id="a">d2</div>
'ajax/get1.jsp'和'ajax/get2.jsp',是兩個(gè)后臺(tái)獲取數(shù)據(jù)的頁(yè)面,這樣,一點(diǎn)擊d1,get1.jsp就會(huì)被動(dòng)態(tài)的加載進(jìn)來,非常方便,當(dāng)然這只是一個(gè)最基本的功能的模型,還可以在上面加上很多功能,大家自由發(fā)揮吧。
相關(guān)文章
按鈕的Ajax請(qǐng)求時(shí)一次點(diǎn)擊兩次提交的解決方法
像ajax請(qǐng)求發(fā)生兩次提交的原因是在執(zhí)行完ajax請(qǐng)求后,并沒有阻止submit的行為,下面小編給大家?guī)韮煞N按鈕的ajax請(qǐng)求時(shí)一次點(diǎn)擊兩次提交的解決方法,一起看看吧2016-09-09Ajax實(shí)現(xiàn)的異步傳輸與驗(yàn)證示例代碼
Ajax異步傳輸應(yīng)用很廣當(dāng)用戶注冊(cè)時(shí),當(dāng)用戶剛一輸完,立即判斷用戶是否存在這就用到了異步傳輸2014-01-01ajax異步傳值及后端接收參數(shù)的多種方式小結(jié)
這篇文章主要介紹了ajax異步傳值及后端接收參數(shù)的多種方式小結(jié),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2023-11-11在dom4j中使用XPath的簡(jiǎn)單實(shí)例
下面小編就為大家?guī)硪黄赿om4j中使用XPath的簡(jiǎn)單實(shí)例。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2016-09-09JQuery ajax返回JSON時(shí)的處理方式 (三種方式)
json數(shù)據(jù)是一種經(jīng)型的實(shí)時(shí)數(shù)據(jù)交互的數(shù)據(jù)存儲(chǔ)方法,使用到最多的應(yīng)該是ajax與json配合使用了,下面由腳本之家小編給大家分享JQuery ajax返回JSON時(shí)的處理方式 (三種方式),需要的朋友可以參考下2015-09-09jQuery+Ajax+PHP實(shí)現(xiàn)“喜歡”評(píng)級(jí)功能附源碼下載
有同學(xué)問我如何實(shí)現(xiàn)一個(gè)像美麗說那樣的“我喜歡”評(píng)級(jí)功能,當(dāng)用戶看到自己喜歡的圖片或文章時(shí),點(diǎn)擊“紅心”按鈕,系統(tǒng)會(huì)自動(dòng)記錄用戶的點(diǎn)擊,并將總數(shù)加1。這樣再結(jié)合不同的系統(tǒng),可以將此功能應(yīng)用到投票或收藏商品中去(如淘寶的收藏商品)。2015-10-10jQuery ajax中使用serialize()方法提交表單數(shù)據(jù)示例
使用jQuery ajax的serialize() 方法表單序列化為鍵值對(duì)(key1=value1&key2=value2…)后提交,下面是使用serialize()序列化表單的實(shí)例,感興趣的朋友可以參考下2013-10-10