不要在門外徘徊,Ajax架構ProtoType的使用方法.

來源:互聯網
上載者:User
本文獻給徘徊在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的使用方法.其它的更多細節,可以參閱相關網站.

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.