亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > AJAX > 正文

揭秘Ajax 及其入門基礎

2024-09-01 08:26:21
字體:
來源:轉載
供稿:網友

一、白話Ajax的原理

這個可以從 C/S 和 B/S 的原理說起。Windows操作系統的誕生,為單機通信提供了很大的支持,程序設計也從早期DOS的單任務單用戶向網絡的分布式應用過度。C/S提供的客戶/服務器編程模式為網絡應用提供了一個有效的通信手段。瀏覽器與Web服務器之間的請求/ 服務,就是一個典型的C/S應用。
有人說,怎么是C/S?這應該是B/S呀!其實是這樣理解的:瀏覽器/Web服務器作為我們實現網頁發布的一個平臺,對于我們在這個平臺上開發的應用,我們的應用是由瀏覽器從Web服務器上下載下來然后展示在瀏覽器的“容器”里的,我們的應用是B/S模式的。但是瀏覽器與Web服務器的通信,卻是C/S模式的??梢哉f,B/S模式是建立在C/S模式之上的。
Windows早期的桌面應用程序(包括單機程序和C/S結構的網絡應用程序),其界面是調用Windows的API來實現的,后來,出現了VB、Delph(VCL)、VC++(MFC)等應用程序框架,把繁雜的API包裝起來,使Windows程序開發大大降低、效率大大提高。
進入B/S編程階段后,我們只需要面向Web服務器和瀏覽器編程,不需要考慮網絡通信和并發等復雜的問題。但是在瀏覽器和Web服務器之間,為了進行數據交互,瀏覽器經常頻繁的向Web服務器提交一些信息,現在的網絡環境又極差,使我們經常等待于瀏覽器與Web服務器的通信狀態,用戶體驗很差。而傳統的桌面程序沒有這個缺陷。
怎樣既能利用B/S程序極強的界面表現力,又能避免其提交后的那一段眩暈的“真空”狀態呢?
其實,在瀏覽器的設計階段,設計師已經為我們考慮到了這個問題。這就是我們要說到的Ajax!Ajax英文是Asynchronous JavaScript and XML,就是在瀏覽器里通過一個機制,實現瀏覽器端與Web服務器端的一個異步通信,參與這個過程的有javascript、XML等技術。Ajax的引入,使B/S信息傳遞的量減少了,瀏覽器界面不再閃爍了,瀏覽者的感覺好多了。
Ajax并不是一項新技術,而是幾個現有技術的新組合,而且它的發展也得益于幾家大的互聯網企業的率先應用(大家常拿Google的在線Maps來舉例)。連瀏覽器寡頭微軟當初都沒怎么看得起這項技術,后來才在VS.NET2.0時代玩命的趕呀追。

二、Ajax的實現

Ajax是由瀏覽器通過內部的一個組件實現的,這個組件負責接收用戶的請求,以XML作為信息中介,并與Web服務器實現異步通信,并把請求的結果返回給瀏覽器,再由瀏覽器呈現給用戶界面。“異步”的意思就是組件在后臺工作期間,瀏覽器與用戶保持在交互狀態,并不更新當前窗口。也不是所有的數據都被組件提交到后臺去。
Ajax實現的基礎是:瀏覽器有一個Ajax引擎;瀏覽器支持Javascript;Web服務器端也支持XML數據格式。并不是所有瀏覽器都支持Ajax技術的,但支持Ajax的瀏覽器越來越多。
這個組件在Windows下是一個COM組件,由IE瀏覽器調用。IE瀏覽器也是在5.0版本以后才提供這個組件的。不同的瀏覽器實現和創建XMLHttpRequest對象的方式是不太一樣的。但作為一個通用的Ajax接口,其外在表現是一致的。
Ajax其實是一項復雜的技術,牽扯到的東西很多。除過XMLHttpRequest對象和Javascript,還有DOM(文檔對象模型),XML等。Javascript是一個粘合劑,它通過XMLHttpRequest對象對瀏覽器端頁面的諸多元素進行操控,實現與Web服務器的后臺交互,實現數據驗證、存取等功能。

三、Ajax編程示例

1,客戶端(文件client.htm)
<html>
<head>
<meta http-equiv=”Content-Type” content=”text/html; charset=gb2312″>
<title>AJAX 客戶端</title>
<script language=”javascript”>
var xmlhttp = false;
////開始初始化XMLHttpRequest對象
//這段代碼考慮到了xmlhttp對象與目前主流瀏覽器的兼容
//如果在IE瀏覽器下測試,一條
//xmlhttp = new ActiveXObject(”Msxml2.XMLHTTP”)
//或xmlhttp = new ActiveXObject(”Microsoft.XMLHTTP”)語句就可以了
if(window.XMLHttpRequest)
{
//Mozilla 瀏覽器
xmlhttp = new XMLHttpRequest();
if (xmlhttp.overrideMimeType)
{//設置MiME類別
xmlhttp.overrideMimeType(’text/xml’);
}
}
else
if (window.ActiveXObject)
{
// IE瀏覽器
try
{ xmlhttp = new ActiveXObject(”Msxml2.XMLHTTP”); }
catch (e)
{
try
{ xmlhttp = new ActiveXObject(”Microsoft.XMLHTTP”); }
catch (e)
{ }
}
}

function send_request(url, data)
{
//初始化、指定處理函數、發送請求的函數
if (!xmlhttp)
{ //異常,創建對象實例失敗
window.alert(”不能創建XMLHttpRequest對象實例.”);
return false;
}

// 確定發送請求的方式和URL以及是否同步執行下段代碼
xmlhttp.open(”POST”, url, true);
xmlhttp.onreadystatechange = processRequest; //根據Web服務器應答,觸發該狀態改變事件
xmlhttp.setRequestHeader(”Content-Type”,”application/x-www-form-urlencoded”);
xmlhttp.send(”username=” + data); //發送信息到后臺程序
}

////狀態改變事件處理函數:處理返回的信息
function processRequest()
{
if (xmlhttp.readyState == 4)
{ // 判斷對象狀態
if (xmlhttp.status == 200) //正常返回信息,狀態編號200
{ // 信息已經成功返回,開始處理信息
alert(xmlhttp.responseText);
}
else
{ //頁面不正常
alert(”您所請求的頁面有異常。”);
}
}
}

function userCheck()
{
var f = document.form1;
var username = f.username.value;
if(username==”")
{
window.alert(”用戶名不能為空。”);
f.username.focus();
return false;
}
else
{
//該語句由用戶按“唯一性檢查”按鈕后執行
send_request(’server.php’, username);
}
}
</script>

</head>

<body>
<body>
<form name=”form1″ action=”" method=”post”>
用戶名:<input type=”text” name=”username” value=”">
<input type=”button” name=”check” value=”惟一性檢查” onClick=”userCheck()”>
<input type=”submit” name=”submit” value=”提交”>
</form>
</body>
</html>

2,Web服務器端(文件server.php)
<?php
//取得客戶端數據
username = _POST[”username”];

//判斷用戶名的惟一性
if( username==”網眼”) //實際工程中,這里一般是從數據庫取用戶名的值
{
printf(”用戶名“%s”已經被注冊,請更換一個用戶名”, username);
}
else
{
printf(”用戶名“%s”尚未被使用,您可以繼續”, username);
}
?>

在以上Client.htm代碼中,首先建立XMLHttpRequest對象實例,然后很據對象的狀態觸發事件處理函數,對返回的信息進行處理。一切控制邏輯都是用Javascript腳本來書寫的,XMLHttpRequest對象與Web服務器的XML信息交換對我們是隱含的,我們不必關心。

這是一個最原始的Ajax編程框架,它能簡單的處理一些少量數據。經過代碼重構,完全可以用在我們自己的小型工程中。

注意Ajax本身是一種瀏覽器端技術,它和Web服務器端采用什么腳本書寫代碼是沒有關系的。比如我們把Client.htm的語句send_request(’server.php’, username)換為send_request(’server.asp’, username),再相對應的建立server.asp文件,內容為:

<%
dim username
username = request(”username”)

if username=”Thomas” then
response.write(”用戶名” & username & “已經被注冊,請更換一個用戶名”)
else
response.write(”用戶名” & username & “尚未被使用,您可以繼續”)
end if
%>
做了這樣的改變后,在瀏覽器端,用戶看到的效果是一模一樣的。
 

 

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲一级免费视频| 欧美成人免费观看| 粉嫩老牛aⅴ一区二区三区| 色综合老司机第九色激情| 国产精品久久久久国产a级| 欧美精品电影免费在线观看| 成人免费福利视频| 欧美另类第一页| 国产精品6699| 亚洲日本中文字幕免费在线不卡| 日韩视频免费看| 欧美日韩成人免费| 国产精品av免费在线观看| 亚洲免费电影一区| 欧美亚洲在线观看| 日韩精品免费视频| 欧美日韩在线观看视频小说| 国产婷婷色综合av蜜臀av| 国产精品日韩在线观看| 午夜精品一区二区三区视频免费看| 成人自拍性视频| 亚洲免费成人av电影| 97视频在线免费观看| 亚洲黄一区二区| 国产精品a久久久久久| 精品久久久久人成| 亚洲午夜国产成人av电影男同| 亚洲欧美在线看| 日韩精品在线影院| 欧美一级在线亚洲天堂| 欧美日本亚洲视频| 国产精品尤物福利片在线观看| 国产精品免费看久久久香蕉| 国产免费久久av| 久久中文字幕在线视频| 一区二区在线视频播放| 久久精品视频在线| 国产性猛交xxxx免费看久久| 国产ts一区二区| 国产精品视频午夜| 亚洲japanese制服美女| 日韩国产在线播放| 色综久久综合桃花网| 国产午夜精品麻豆| 亚洲韩国欧洲国产日产av| 国产不卡av在线| 91色琪琪电影亚洲精品久久| 亚洲第一区中文99精品| 97在线看免费观看视频在线观看| 亚洲网站在线观看| 日韩精品久久久久久福利| 亚洲片av在线| 亚洲欧美国产va在线影院| 国产成人高清激情视频在线观看| 久久精品福利视频| 成人精品在线视频| 亚洲伊人久久大香线蕉av| 日韩激情在线视频| 久久国产加勒比精品无码| 久久久久北条麻妃免费看| 亚洲电影在线看| 精品国产一区二区三区在线观看| 日韩在线观看网址| www.日本久久久久com.| 91久久久久久久一区二区| 欧美日韩ab片| 欧美日韩国产综合新一区| 91亚洲一区精品| 成人国产精品免费视频| 色偷偷88888欧美精品久久久| 亚洲一区二区在线播放| 91亚洲国产成人久久精品网站| 91精品中国老女人| 欧美一级视频一区二区| 欧美精品videos另类日本| 91网站在线看| 色狠狠av一区二区三区香蕉蜜桃| 成人午夜激情网| 国产日韩一区在线| 久久精品亚洲94久久精品| 韩国三级日本三级少妇99| 亚洲精品免费av| 一区国产精品视频| 欧美黑人狂野猛交老妇| 91香蕉嫩草影院入口| 欧美成人精品h版在线观看| 成人在线观看视频网站| 亚洲bt欧美bt日本bt| 欧美又大粗又爽又黄大片视频| 国产精品久久77777| 欧美激情视频在线免费观看 欧美视频免费一| 97欧美精品一区二区三区| 精品一区精品二区| 在线观看欧美日韩国产| 奇米一区二区三区四区久久| 日韩精品在线免费观看视频| 亚洲精品国产精品国自产观看浪潮| 日韩欧美成人精品| 庆余年2免费日韩剧观看大牛| 亚洲成人在线视频播放| 欧美日韩不卡合集视频| 国产成人精品日本亚洲| 国产一区二区三区在线| 97在线免费视频| 亚洲欧美激情在线视频| 欧美电影免费观看电视剧大全| 日韩中文字幕在线播放| 日韩欧美亚洲范冰冰与中字| 91av免费观看91av精品在线| 欧美日韩精品中文字幕| 色妞欧美日韩在线| 国产精品wwwwww| 日韩在线免费高清视频| 最近2019年手机中文字幕| 日本一区二区在线免费播放| 欧美性做爰毛片| 亚洲在线一区二区| 亚洲美女久久久| 97人人模人人爽人人喊中文字| 亚洲黄色av网站| 清纯唯美亚洲激情| 精品亚洲一区二区| 亚洲www视频| 亚洲视频欧洲视频| 国产一区二区视频在线观看| 亚洲摸下面视频| 操91在线视频| 国产精品欧美激情| 精品久久久视频| 国产欧美一区二区三区在线看| 亚洲影院在线看| 中文欧美日本在线资源| 国产一区视频在线| 久久久久一本一区二区青青蜜月| 久久精品美女视频网站| 裸体女人亚洲精品一区| 一个人看的www久久| 九九久久久久久久久激情| 欧美在线中文字幕| 国产亚洲激情视频在线| 欧美天天综合色影久久精品| 亚洲综合色激情五月| 97精品国产97久久久久久| 亚洲少妇中文在线| 中文字幕久久亚洲| 日韩欧美亚洲国产一区| 日韩av最新在线观看| 亚洲成人av在线| 91精品国产乱码久久久久久蜜臀| 国产一区二区丝袜高跟鞋图片| 欧美在线中文字幕| 日韩中文字幕免费看| 国产精品色午夜在线观看| 这里只有精品丝袜| 亚洲在线第一页| 欧美日韩中文在线观看| 91精品国产沙发| 欧美黑人巨大xxx极品| 欧美国产日韩中文字幕在线| 亚洲欧美激情四射在线日| 97成人在线视频| 欧美日韩亚洲成人| 日韩少妇与小伙激情| 中文字幕亚洲综合久久筱田步美|