2007年8月9日 星期四

不發出 PostBack 的方法

有時為了避免發出 PostBack,卻要透過Server端存取資料時,可採用下面的作法。
有兩種ActiveXObject可使用,Msxml2.XMLHTTP.4.0的版本,提供較好的MultiThread的作法,
缺點是用戶端的瀏覽器需下載更新軟體才能使用。而
Microsoft.XMLHTTP則是他的前一個版本,
效能可能不如4.0版的好,但是客戶端瀏覽器不需額外安裝更新檔案。



var

oHttp=new
ActiveXObject("Msxml2.XMLHTTP.4.0");



// or for MSXML 3.0 IE5.5



//
var oHttp=
new
ActiveXObject("Microsoft.XMLHTTP");


 


 


 


<SCRIPT language="JScript">

<!--


var retVal=null;

var oHTTP=null;


 


 


function GetCheck(arg)


{


 


        oHTTP= new
ActiveXObject("Microsoft.XMLHTTP");


        oHTTP.onreadystatechange =
oHTTP_onreadystatechange;
  //event handle


       


        var url =
arg+"?ConsignorNO="+Form1.txtConsignorNo.value;


       


 


        try


        {


                oHTTP.Open("GET", url,
false);
//false:同步  true:非同步


                oHTTP.Send();


        }


 


        catch(e)


        {


                //for Debug Only


                alert(e);


        }


}


 


function oHTTP_onreadystatechange()

{


     if (oHTTP.readyState == 4)


     {         

        retVal = oHTTP.responseText;

     }


}



 //-->

 </SCRIPT>


這裡所指定的url,是去開啟一個aspx的檔案,在這個檔案裡的 OnPageLoad()屬性中,我們會寫程式去資料庫抓取我們想要的資料。
我們最後會將資料透過 Response.Write()的方式,寫到頁面上。因為我們採用 GET() 的方式,所以這頁面上的資料都會被我們取回
來。另外,在.aspx的HTML裡,除了codebehinde那一行留著,其他都要刪掉。在Response.Write()執行完之後,也要用Response.End()
當結尾,避免後面被塞了一些垃圾標籤。

沒有留言:

張貼留言