隨筆-86  評論-767  文章-3  trackbacks-3

          我一直很推崇MSN Space的服務(wù),對其相冊服務(wù)和皮膚一直情有獨鐘。國內(nèi)的播客,我首選MSN Space。也可能,MSN Space沒有那么多炒作。

          恩,言歸正傳。幾天來研究一下MSN Space的Ajax應(yīng)用。典型的,其應(yīng)用主要體現(xiàn)在:網(wǎng)絡(luò)日志的評論、固定鏈接、引用記錄、自定義列表上面。了解Ajax之前,一直對其數(shù)據(jù)的獲取方式很好奇?,F(xiàn)在,大概略知一二了。如下圖所示。
          space-article.jpg
          space-comment.jpg
          space-link.jpg
          space-list.jpg
          space-track.jpg
          對于共享空間首頁,“添加評論”、“閱讀評論”、“固定鏈接”、“引用通告”主要用到的Javascript函數(shù)為:OpenSection(section, entryid, bNewComment, bTriedPassportRefresh, bAreNewCommentsAllowed) ,其通過第一個參數(shù)section判斷各種操作類別,然后從服務(wù)器獲取數(shù)據(jù),在顯示在相應(yīng)的DIV浮動層中。
          其使用Ajax獲取數(shù)據(jù)的關(guān)鍵代碼由Javascript函數(shù)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定義在共享空間的首頁,其余上述兩個函數(shù)定義在BlogJS.js文件中。

          《Ajax開發(fā)詳解》的“模擬MSN Space”一章將有更加詳細的闡述。

          posted on 2006-03-09 09:49 eamoi 閱讀(5171) 評論(3)  編輯  收藏 所屬分類: AJAX

          評論:
          # re: [匯總]我所看到的Ajax應(yīng)用之MSN Space 2006-05-07 19:26 | 李文廣
          很高興能成為你的讀者,今天我買了你的《AJAX開發(fā)精要》,寫得真好!……
          很及時,謝謝你。
          我想在你的博客里最好多一點引用這些技術(shù),這樣能讓人們有真實的感受
          ^☉^
          我的QQ:280380365
          C#開發(fā)群:14363918
          歡迎任何人加我  回復(fù)  更多評論
            
          # re: [匯總]我所看到的Ajax應(yīng)用之MSN Space 2006-05-07 19:34 | 李文廣
            順便說說,我也在開發(fā)一系列的書,已出版的有九個軟件的快捷鍵卡與及一本叫《48分鐘學會五筆》的書,而現(xiàn)在我是用AJAX來開發(fā)各種隨網(wǎng)軟件,所以我們是同行^﹀^。雖然學編程剛開始,但我已經(jīng)在寫一本叫《完全用中文學HTML》的書了。所以有交流的需求!……
            順祝你的書是最好買的AJAX書。至少我認為是這樣,之前買了一本AJAX基礎(chǔ)入門,是在北京的地壇五月三日的書展買的,雖然很好,但怎么也是外國人的思想,與我們有一段距離,所以又痛下決心買了你的書,發(fā)覺真的沒有買錯,寫得好極了,連HTML、JAVASCRIPT、DOM也有教,真不錯。建議再做幾個視頻教程,與及相關(guān)的大型應(yīng)用軟件,如象OBLOG、DVBBS等的東西,我想更有說服力,來宣傳你的書也有好處,祝你好動……
            www.ddh4.com 快捷鍵網(wǎng)  回復(fù)  更多評論
            
          # re: [匯總]我所看到的Ajax應(yīng)用之MSN Space 2006-05-19 17:11 | xcb
          cool  回復(fù)  更多評論
            
          主站蜘蛛池模板: 自贡市| 贵州省| 东港市| 湖州市| 福安市| 永丰县| 尉犁县| 湖北省| 观塘区| 西青区| 广宁县| 贺兰县| 额济纳旗| 若尔盖县| 五家渠市| 永嘉县| 洪泽县| 新密市| 保定市| 石城县| 修武县| 濉溪县| 浦东新区| 贺兰县| 阳信县| 通许县| 井陉县| 本溪市| 临夏市| 保康县| 南汇区| 通海县| 临高县| 车险| 当阳市| 青河县| 右玉县| 金乡县| 六枝特区| 茂名市| 察雅县|