六月婷婷综合激情-六月婷婷综合-六月婷婷在线观看-六月婷婷在线-亚洲黄色在线网站-亚洲黄色在线观看网站

明輝手游網(wǎng)中心:是一個免費提供流行視頻軟件教程、在線學(xué)習(xí)分享的學(xué)習(xí)平臺!

不刷新頁面的情況下調(diào)用ASP

[摘要]RS技術(shù)的一個具體例子在前面的帖子中,我介紹了RS的基本工作原理,顯然如果將RS技術(shù)運用在一個網(wǎng)站的設(shè)計中將會有很多非凡的作用(尤其是它的那個最大的優(yōu)點,可以在不刷新頁面的情況下調(diào)用服務(wù)端的代碼)。...

RS技術(shù)的一個具體例子
在前面的帖子中,我介紹了RS的基本工作原理,顯然如果將RS技術(shù)運用在一個網(wǎng)站的設(shè)計中將會有很多非凡的作用(尤其是它的那個最大的優(yōu)點,可以在不刷新頁面的情況下調(diào)用服務(wù)端的代碼)。正是因為這個特點,你就可以象在編寫一個傳統(tǒng)的C/S模式的程序一樣,對數(shù)據(jù)庫的數(shù)據(jù)進行處理了(我想大家一定很想知道具體應(yīng)該如何來實現(xiàn)了,下面將給出一個具體的例子,調(diào)試這個破程序幾乎快把我給累死,呵呵。)
從前面的描述可以看到,要使用RS技術(shù)就需要客戶端和服務(wù)端滿足下面兩個條件:



1。客戶端只需要支持Java applet即可



2。而服務(wù)端只需要支持ASP即可
換句話說,就是RS技術(shù)是完全獨立與瀏覽器的(當(dāng)然瀏覽器至少需要滿足支持Java和JavaScript),你可以在IE中使用,也可以完全在NC中使用,這也是區(qū)別與RDS技術(shù)的一個顯著特點。 
在能夠靈活運用RS技術(shù)前,先要說明一個問題,就是前面也曾經(jīng)提到過的“異步調(diào)用”的問題。也正是因為有異步調(diào)用,才能夠?qū)崿F(xiàn)你只刷新頁面的某一部分而不用刷新整個頁面。
由于它的這個特點,你可以讓服務(wù)端來實現(xiàn)在你瀏覽頁面的同時對你輸入數(shù)據(jù)的合法性檢查(當(dāng)然這可以是一系列很復(fù)雜的合法性檢查,例如需要將用戶輸入的數(shù)據(jù)和數(shù)據(jù)庫內(nèi)已有的數(shù)據(jù)進行對比等,這個可不是客戶端的JS能夠解決的),然后當(dāng)服務(wù)端返回檢查結(jié)果后,你再進行相應(yīng)的操作(例如彈出一個對話框告訴用戶輸入出錯等等).異步調(diào)用時的語法如下:



RSExecute(serverURL, functionname, param_list)



第一個參數(shù)是你想調(diào)用的asp頁面的完整的URL路徑



第二個參數(shù)是你想調(diào)用函數(shù)的名稱



后面的就是該函數(shù)需要的輸入?yún)?shù)了

如果你想調(diào)用的函數(shù)需要兩個輸入?yún)?shù)的話,就是這樣的寫法:



RSExecute(serverURL, functionname, f_arg_1, f_arg_2)



當(dāng)進行調(diào)用時有兩種寫法,



    一種是有返回結(jié)果的調(diào)用方式:



    objResult = RSExecute(serverURL, functionname, f_arg_1, f_arg_2);



    另外一種則是沒有返回結(jié)果的調(diào)用方式:



    RSExecute(url, func_name, f_arg_1, f_arg_2, CallbackFunction);



這種調(diào)用方式要特別的注意,其中的CallbackFunction是客戶端的一個JS函數(shù)它表示一但RS執(zhí)行完畢服務(wù)端上的調(diào)用,就會馬上調(diào)用這個函數(shù),并把結(jié)果返回到這個函數(shù)中去。



    一個典型的CallbackFunction函數(shù)應(yīng)該是這樣的結(jié)構(gòu):



function CallbackFunction(objResult) {
//你自己的處理過程
}  



其中唯一的輸入?yún)?shù)objResult就是RS調(diào)用的返回值.



下面我們假設(shè)這樣一種情況:



用戶在瀏覽器中輸入了用戶的e-mail地址,然后用戶離開了e-mail地址輸入框進入接下來的輸入過程,這個時候就是RS該上場了,它根據(jù)用戶輸入的地址在服務(wù)端的數(shù)據(jù)庫中查詢這個地址,就可以判斷出這個用戶是否已經(jīng)存在,然后把結(jié)果返回給客戶端,在客戶端再使用DHTML技術(shù)在一個叫"ShowResult"的輸入框里面提示用戶以前輸入的信息。



function CallbackFunc(objResult) {
   // 提示用戶的信息
   window[objResult.context].value = objResult.return_value;
}  
而RSExecute()應(yīng)該這么調(diào)用RSExecute(serverURL, functionname, f_arg_1, CallbackFunc, 



"ShowResult");



不說了,不說了,上面羅嗦了這么多,我想大家也都看得頭大了,下面還是讓具體的代碼來發(fā)言把:



(請在使用代碼前在你的服務(wù)器上建立一個叫NW的系統(tǒng)DSN文件,該文件使用了Northworld即中文ACCESS97自帶的示例數(shù)據(jù)庫)



下面的例子是這么進行的,default.htm中分為兩禎,在main.html頁面中使用了RS技術(shù),大家可以注意到在main.html中沒有使用到submit所以如果你在該頁面中直接敲回車鍵的話什么都不會出現(xiàn),你必須通過鼠標(biāo)單擊那個"獲取信息"按扭來使用這個局部頁面刷新技術(shù)。在單擊完該按扭后,頁面會有一段小小的延遲(這段時間內(nèi)java applet在后臺建立了和服務(wù)端的連接)然后馬上頁面回復(fù)正常的鼠標(biāo),你可以在該頁面中繼續(xù)進行其他的操作。而不必象普通頁面刷新時,你只有等待數(shù)據(jù)。而info.asp大家一眼就能夠看明白,其實就是一個很簡單的處理字符串的程序。



如果大家要是對DHTML技術(shù)熟悉的話,完全可以在客戶端完成這些操作。至于EmpData.asp就是服務(wù)端處理數(shù)據(jù)的程序了。好了,其中的好處大家可以自己去體會。



特別注意,不要改變太多代碼,不然很容易出錯,畢竟是在使用JavaScript編程.



Default.htm文件代碼如下:
<HTML>
<HEAD>
<TITLE>RS技術(shù)的實現(xiàn)例子</TITLE>
</HEAD>
<FRAMESET id=fset rows="70%,30%">
  <FRAME name=main src="main.html">  
  <FRAME name=info src="info.asp">  
</FRAMESET>
</HTML>



Maim.html文件代碼如下
<HTML>
<HEAD>
<TITLE>RS技術(shù)的實現(xiàn)例子</TITLE>
</HEAD>
<BODY>
<script language="JavaScript" src="http://YourServer/_ScriptLibrary/rs.htm"></script>
<script language="JavaScript">
   RSEnableRemoteScripting("http://YourServer/_ScriptLibrary");
</script>
<h1>雇員信息</h1>
<hr>
<form name=MyForm>
請輸入你想查詢的名字:
<br><input type=text name="empLastName" size=40>  
<input type=button name=btnExecute style="width=150"
       value="獲取信息"  
       onclick="execAsynch(empLastName.value)">
</form>
<hr>



<SCRIPT LANGUAGE="javascript">
    var serverURL = "http://YourServer";
    var pageURL   = "/batman/EmpData.asp";
    function refreshPage(co)
    {
        if (co.status != 0) {
                alert("發(fā)生異常錯誤\n" +  
                      message);
            }
            strText = co.return_value;    
            top.info.location = "info.asp?info=" + escape(strText);
         }
    function execAsynch(empLastName)
    {
        RSExecute(serverURL+pageURL, "GetEmpInfoAsArray",  
              empLastName, refreshPage);
    }
</SCRIPT>
</BODY>
</HTML>



info.asp文件代碼
<HTML>
<BODY>
<%
Response.Write Request.ServerVariables("REMOTE_USER")  
    strText = Request.QueryString("info")
    If strText = "" Then Response.End
        arrData = split(strText, " ")
        arrLabels = split("職工,頭銜,城市,雇傭日期", ",")
%>
<table border=0>
<%  
    for i=0 to 3
        Response.Write "<tr>"
        Response.Write "<td><b>" & arrLabels(i) & "</b></td>"  
        Response.Write "<td><i>" & arrData(i) & "</i></td>"  
    next
%>
</table>
</BODY>
</HTML>



EmpData.asp文件
<%@ LANGUAGE=VBSCRIPT %>
<% RSDispatch %>



<SCRIPT RUNAT=SERVER Language=javascript>
<!--#INCLUDE VIRTUAL="/_ScriptLibrary/RS.ASP"-->



    function Description()
    {  
           this.GetEmpInfoAsArray = DoGetData;
    }
    public_description = new Description();



    function DoGetData(empName)
    {
            sql = "select * from 雇員 where [名字]="" + empName + """;
            rst = new ActiveXObject("ADODB.Recordset");
            rst.CursorLocation = 3;      
            rst.Open(sql, "NW");
            i = 0;
    strText = "";
            if (rst.RecordCount == 1)  {
               strText += rst.Fields("雇員ID").Value + " - " +
                          rst.Fields("尊稱").Value + " " +  
                          rst.Fields("姓氏").Value + " " +  
                          rst.Fields("名字").Value;
               strText += " ";
               strText += rst.Fields("頭銜").Value;
               strText += " ";
               strText += rst.Fields("城市").Value + " " +  
                          rst.Fields("地區(qū)").Value + ", " +
                          rst.Fields("國家").Value;
               strText += " ";
               d = new Date(rst.Fields("雇用日期").Value);
               strText += (1+d.getMonth()) + "/" + d.getDate() + "/" +d.getYear();
            }
            return strText;
        }
</SCRIPT>  



主站蜘蛛池模板: 一区二区三区视频网站 | 在线视频第一页 | 啪啪免费视频网站 | 网址大全在线免费观看 | 天天曰天天干 | 手机看片日韩日韩国产在线看 | 四虎成人免费网址在线 | 一二三四在线观看高清在线观看一 | 欧美午夜免费观看福利片 | 日本黄网址 | 日本卡一卡2卡3卡4精品卡网站 | 青草青在线视频 | 在线波多野结衣 | 色噜噜狠狠狠狠色综合久不 | 亚洲好看站 | 人人天天夜夜 | 午夜不卡在线 | 色姣姣狠狠撩综合网 | 天天干在线免费视频 | 最新国产视频 | 丝袜美腿护士办公室在线观看 | 天堂资源在线中文 | 亚洲成人高清 | 日本成人一区二区三区 | 日本午夜网站 | 五月激情啪啪网 | 日韩欧美国产另类 | 青青草原在线 | 午夜视频日本 | 天堂中文在线观看 | 中文字幕一区在线观看视频 | 天天躁日日躁狠狠躁一级毛片 | 亚洲资源最新版在线观看 | 日本亚洲最大的色成网站www | 水蜜桃一区一区三全集 | 青青在线播放 | 日本视频播放 | 色综合中文字幕色综合激情 | 青青伊人久久 | 欧美性视频在线 | 日日摸人人拍人人澡 |