本文獻給徘徊在Ajax架構門口的技術人員:
如今瀏覽器多如牛毛,對javascript的解釋又不統一,所以,很多技術團體或者組織就寫出一套專門的應對大多數瀏覽器的JS架構,當然有很多,我這裡不一一介紹,僅拿裡面最小巧的一個ProtoType來作為案例.
用ProtoType原因主要有幾下幾個:
1.它小巧,用於一般的Ajax互動已經夠用了
2.它易上手,沒有複雜的文法,核心語句只有幾句....
使用步驟:
1:在html檔案<head></head>標籤內引入它的檔案,如:<script language="javascript" type="text/javascript" src="js/Prototype.js"></script>
2:在html檔案任何位置寫一個提交資料的js方法
例如:
<script language="javascript" type="text/javascript">
function SubmitData(userName,userPass){
var Action='username='+userName+'&userpass='+userPass;//這裡定義好要傳送的參數
var options={
method:'get',//傳遞的方式,是get還是post,如果提交一篇文章,建議用post
parameters:Action,//參數
onComplete:function(transport)//這裡是關鍵,這是ajax的回呼函數,就是伺服器返回後,由瀏覽器自動調用的函數,括弧裡的是從伺服器返回的內容
{
var returnvalue=transport.responseText.split('|');//這裡我們假定伺服器返回了"err|驗證失敗"或"suc|驗證成功"
if(returnvalue[0] == 'err'){
alert(returnvalue[1]);//如果伺服器驗證失敗要做的事情
}else if(returnvalue[0] == 'suc'){
alert(returnvalue[1]);//如果伺服器驗證成功要幹嘛.
}
}
};
new Ajax.Request('Submit.asx?no-cache='+Math.random(),options);//這裡是發送ajax請求.
}
</script>
整個用戶端就只這麼點東西,比起我們自己寫的ajax語句來,既要整潔,又要易懂,更重要的是對瀏覽器安全色性要更好.
例如我們以前可能這麼寫:
var xmlHttpRequest = null;
function Submit(value)
{
var url = "ParamHandler.ashx";
if (window.ActiveXObject){ /*在IE下初始化XMLHttpRequest對象 */
try
{
//新版本的 Internet Explorer
xmlHttpRequest= new ActiveXObject("Msxml2.XMLHTTP");
}catch (otherMicrosoft)
{
try{
//較老版本的 Internet Explorer
xmlHttpRequest= new ActiveXObject("Microsoft.XMLHTTP");
}
catch (failed)
{
// 還是失敗,那麼就認為建立失敗……
xmlHttpRequest= false;
}
}
}
else if(window.XMLHttpRequest)
{ /*在Firefox下初始化XMLHttpRequest對象 */
xmlHttpRequest = new XMLHttpRequest();
}
if(!xmlHttpRequest)
{
sAlert("建立 XMLHttpRequest 對象失敗!");
}
xmlHttpRequest.open("POST", url, true);
xmlHttpRequest.onreadystatechange = onReadyStateChange;
xmlHttpRequest.setRequestHeader(
"Content-Type",
"application/x-www-form-urlencoded; charset=UTF-8");
xmlHttpRequest.send("myvalue=" + value);
}//執行個體化xmlHttpRequest用了多長代碼.
function onReadyStateChange()//這是回呼函數
{
if (xmlHttpRequest.readyState == 4)
{
if (xmlHttpRequest.status == 200)
{
var returnvalue = xmlHttpRequest.responseText.split("|");
if(returnvalue[0] == 'err'){
alert(returnvalue[1]);//如果伺服器驗證失敗要做的事情
}else if(returnvalue[0] == 'suc'){
alert(returnvalue[1]);//如果伺服器驗證成功要幹嘛.
}
}
}
}
到這裡,這個調用才完成結束,如果一個頁面的表單很多,那麼搞起來就更麻煩,還容易出錯!這就是我們要堅決使用Ajax架構的原因.
至於伺服器端如何處理這些參數,其實就是Request.QueryString或者Request.Form來接收值,這要看你的method定義什麼方式去發送了.傳回值,其實就是Response.Write("suc|驗證成功");這樣了.
本文聖旨在揭示ProtoType中ajax的使用方法.其它的更多細節,可以參閱相關網站.