AJAX 隨記
更新時(shí)間:2009年06月01日 00:57:57 作者:
使用AJAX可以提供無(wú)頁(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ù)來(lái)處理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)來(lái),非常方便,當(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ù)來(lái)處理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)來(lái),非常方便,當(dāng)然這只是一個(gè)最基本的功能的模型,還可以在上面加上很多功能,大家自由發(fā)揮吧。
相關(guān)文章
零基礎(chǔ)學(xué)習(xí)AJAX之AJAX的簡(jiǎn)介和基礎(chǔ)
本系列我們將來(lái)逐步學(xué)習(xí)ajax,作為本系列的開篇文章,我們還是俗套些,先來(lái)講解下ajax的簡(jiǎn)介和基礎(chǔ)知識(shí)吧。2015-01-01
ajax+asp無(wú)限級(jí)分類樹型結(jié)構(gòu)的代碼
ajax+asp無(wú)限級(jí)分類樹型結(jié)構(gòu)的代碼...2007-10-10
ajax JSONP請(qǐng)求處理回調(diào)函數(shù)jsonpCallback區(qū)分大小寫
使用ajax進(jìn)行 JSONP跨域請(qǐng)求,因?yàn)楸徽?qǐng)求的對(duì)方的回調(diào)函數(shù)名稱是無(wú)法修改,想到設(shè)置AJAX 的JSONP參數(shù)。但是發(fā)現(xiàn)根本不起作用。最后偶然發(fā)現(xiàn) jsonpcallback是區(qū)分大小寫的2013-09-09
零基礎(chǔ)學(xué)習(xí)AJAX之AJAX框架
本文是零基礎(chǔ)學(xué)習(xí)AJAX系列教程的第二篇,我們介紹點(diǎn)不一樣的知識(shí),學(xué)習(xí)下ajaxLib和ajaxGold兩款框架,方便我們更好的理解ajax.2015-01-01
利用AJAX實(shí)現(xiàn)無(wú)刷新數(shù)據(jù)分頁(yè)
這篇文章主要介紹了利用AJAX實(shí)現(xiàn)數(shù)據(jù)分頁(yè)的相關(guān)資料,如何利用AJAX無(wú)刷新直接從服務(wù)器獲取數(shù)據(jù)分頁(yè),感興趣的小伙伴們可以參考一下2016-04-04
AJAX請(qǐng)求是否真的不安全?談一談Web安全與AJAX的關(guān)系
Ajax中沒有固有的安全漏洞,但是對(duì)該技術(shù)向量的適配顯著地改變了網(wǎng)絡(luò)應(yīng)用的開發(fā)途徑以及方法論。AJAX請(qǐng)求的安全性是大家經(jīng)常會(huì)談?wù)摰囊粋€(gè)話題,AJAX請(qǐng)求是否真的不安全?下面這篇文章就來(lái)給大家詳細(xì)談一談Web安全與AJAX關(guān)系的相關(guān)資料,需要的朋友可以參考下。2018-01-01
javascript請(qǐng)求servlet實(shí)現(xiàn)ajax示例(分享)
下面小編就為大家?guī)?lái)一篇javascript請(qǐng)求servlet實(shí)現(xiàn)ajax示例(分享)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-06-06

