DIV CSS 佈局教程網

 DIV+CSS佈局教程網 >> 網頁腳本 >> JavaScript入門知識 >> AJAX入門 >> AJAX詳解 >> Ajax應用案例之MSN Space
Ajax應用案例之MSN Space
編輯:AJAX詳解     
我一直很推崇MSN Space的服務,對其相冊服務和皮膚一直情有獨鐘。國內的播客,我首選MSN Space。也可能,MSN Space沒有那麼多炒作。 

恩,言歸正傳。幾天來研究一下MSN Space的AJax應用。典型的,其應用主要體現在:
網絡日志的評論、固定鏈接、引用記錄、自定義列表上面。了解AJax之前,一直對其數據的獲取方式很好奇。現在,大概略知一二了。如下圖所示。 
對於共享空間首頁,“添加評論”、“閱讀評論”、“固定鏈接”、“引用通告”主要用到的Javascript函數為:OpenSection(section, entryid, bNewComment, bTrIEdPassportRefresh, bAreNewCommentsAllowed) ,其通過第一個參數section判斷各種操作類別,然後從服務器獲取數據,在顯示在相應的DIV浮動層中。 
其使用AJax獲取數據的關鍵代碼由Javascript函數GetBlogActivity(entryid, item, otherformfields, bTrIEdRefresh) 提供。其代碼如下所示: 
 function GetBlogActivity(entryid, item, otherformfields, bTrIEdRefresh) 
 { 
 var response = ""; 
 var fException = false; 
 eval (’try {xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); } catch (e) {XMLhttp = null;}’); 
 if (XMLhttp != null) 
 { 
 try{ 
 XMLhttp.Open("POST", BlogJSPostUrl, false); 
 var strA = "handle="+ entryid; 
 strA += "&blogitem=" + item; 
 strA += "&" + BlogJSBlogPartParam; 
 strA += otherformfIElds; 
 XMLhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); 
 XMLhttp.Send(strA); 
 }catch(e){ 
 fException = true; 
 } 
 if(fException){ 
 if(bTrIEdRefresh){ 
 //exception after trying passport refresh, stop here to avoid infinite loop 
 response = "error"; 
 }else{ 
 //build the response - an iframe that will load up and refresh passport credentials 
 var timer = setTimeout(DisplayContentLoadError(item, entryid), 10000); //fail in 10s if not cleared 
 var iframeString = "<iframe src=\"/PassportRefresh.ASPx?id=" + entryid + "&function=get&timer=" + timer + "&item=" + item + "&formfields=" + otherformfIElds.replace(/&/g, "%26") + "\" />"; 
 var divID = "ppRefresh" + item + entryid; 
 if(document.getElementById(divID)){ 
 response = iframeString; 
 document.getElementById(divID).style.display = "none"; 
 }else{ 
 response = "<div style=\"display:none\" id=\"" + divID + "\">" + iframeString + "</div>"; 
 } 
 } 
 }else{ 
 if(XMLhttp.status != 200){ 
 response = "error"; 
 }else{ 
 response = XMLhttp.responseText; 
 } 
 } 
 } 
 return response; 
 } 

很容易看到,其使用了XMLHttpRequest的同步請求方式。這就是為什麼每次單擊“閱讀評論”的時候頁面都需要停頓一下。 XMLhttp.Open("POST", BlogJSPostUrl, false);中所用到的BlogJSPostUrl定義在共享空間的首頁,其余上述兩個函數定義在BlogJS.JS文件中。 

《AJax開發詳解》的“模擬MSN Space”一章將有更加詳細的闡述。
XML學習教程| jQuery入門知識| AJAX入門| Dreamweaver教程| Fireworks入門知識| SEO技巧| SEO優化集錦|
Copyright © DIV+CSS佈局教程網 All Rights Reserved