关于页面局部刷新例程

 RS技术的一个具体例子
    在前面的帖子中,我介绍了RS的基本工作原理,显然如果将RS技术运用在一个
网站的设计中将会有很多非凡的作用(尤其是它的那个最大的优点,可以在不刷新
页面的情况下调用服务端的代码)。正是因为这个特点,你就可以象在编写一个
传统的C/S模式的程序一样,对数据库的数据进行处理了(我想大家一定很想知道具体应该如何来实现了,下面将给出一个具体的例子,调试这个破程序几乎快把我给累死,呵呵。)
    从前面的描述可以看到,要使用RS技术就需要客户端和服务端满足下面两个条件:
1。客户端只需要支持Java applet即可
2。而服务端只需要支持ASP即可
换句话说,就是RS技术是完全独立与浏览器的(当然浏览器至少需要满足支持Java
和JavaScript),你可以在IE中使用,也可以完全在
NC中使用,这也是区别与RDS技术的一个显著特点。
    在能够灵活运用RS技术前,先要说明一个问题,就是前面也曾经提到过的“异步调用”
的问题。也正是因为有异步调用,才能够实现你只刷新页面的某一部分而不用刷新
整个页面。
    由于它的这个特点,你可以让服务端来实现在你浏览页面的同时
对你输入数据的合法性检查(当然这可以是一系列很复杂的合法性检查,例如需要
将用户输入的数据和数据库内已有的数据进行对比等,这个可不是客户端的JS能够解决的)
然后当服务端返回检查结果后,你再进行相应的操作(例如弹出一个对话框告诉用户
输入出错等等)
异步调用时的语法如下:
RSExecute(serverURL, functionname, param_list)
第一个参数是你想调用的asp页面的完整的URL路径
第二个参数是你想调用函数的名称
后面的就是该函数需要的输入参数了
    如果你想调用的函数需要两个输入参数的话,就是这样的写法:
RSExecute(serverURL, functionname, f_arg_1, f_arg_2)
当进行调用时有两种写法,
    一种是有返回结果的调用方式:
    objResult = RSExecute(serverURL, functionname, f_arg_1, f_arg_2);
    另外一种则是没有返回结果的调用方式:
    RSExecute(url, func_name, f_arg_1, f_arg_2, CallbackFunction);
这种调用方式要特别的注意,其中的CallbackFunction是客户端的一个JS函数
它表示一但RS执行完毕服务端上的调用,就会马上调用这个函数,并把结果返回到这个
函数中去。
    一个典型的CallbackFunction函数应该是这样的结构:
function CallbackFunction(objResult) {
//你自己的处理过程
}
其中唯一的输入参数objResult就是RS调用的返回值.
    下面我们假设这样一种情况:
    用户在浏览器中输入了用户的e-mail地址,然后用户离开了e-mail地址输入框
进入接下来的输入过程,这个时候就是RS该上场了,它根据用户输入的地址在
服务端的数据库中查询这个地址,就可以判断出这个用户是否已经存在,然后
把结果返回给客户端,在客户端再使用DHTML技术在一个叫"ShowResult"的输入框
里面提示用户以前输入的信息。
function CallbackFunc(objResult) {
   // 提示用户的信息
   window[objResult.context].value = objResult.return_value;
}
而RSExecute()应该这么调用
RSExecute(serverURL, functionname, f_arg_1, CallbackFunc, "ShowResult");
    不说了,不说了,上面罗嗦了这么多,我想大家也都看得头大了,下面还是
让具体的代码来发言把:
(请在使用代码前在你的服务器上建立一个叫NW的系统DSN文件,该文件使用了
Northworld即中文ACCESS97自带的示例数据库)
    下面的例子是这么进行的,default.htm中分为两祯,在
main.html页面中使用了RS技术,大家可以注意到在main.html中没有使用到submit
所以如果你在该页面中直接敲回车键的话什么都不会出现,你必须通过鼠标单击
那个"获取信息"按扭来使用这个局部页面刷新技术。在单击完该按扭后,页面会有
一段小小的延迟(这段时间内java applet在后台建立了和服务端的连接)
然后马上页面回复正常的鼠标,你可以在该页面中继续进行其他的操作。
而不必象普通页面刷新时,你只有等待数据。
而info.asp大家一眼就能够看明白,其实就是一个很简单的处理字符串的程序。
如果大家要是对DHTML技术熟悉的话,完全可以在客户端完成这些操作。
至于EmpData.asp就是服务端处理数据的程序了。
好了,其中的好处大家可以自己去
体会。

特别注意,不要改变太多代码,不然很容易出错,毕竟是在使用JavaScript编程

Default.htm文件代码如下:
<HTML>
<HEAD>
<TITLE>RS技术的实现例子</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技术的实现例子</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="获取信息"
       >
</form>
<hr>

<SCRIPT LANGUAGE="javascript">
    var serverURL = "http://YourServer";
        var pageURL   = "/batman/EmpData.asp";

    function refreshPage(co)
    {
        if (co.status != 0) {
                alert("发生异常错误\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("地区").Value + ", " +
                          rst.Fields("国家").Value;
               strText += "|";
               d = new Date(rst.Fields("雇用日期").Value);
               strText += (1+d.getMonth()) + "/" + d.getDate() + "/" + d.getYear();
            }
            return strText;
        }
</SCRIPT>

时间: 2024-09-17 03:39:09

关于页面局部刷新例程的相关文章

require.js-求backbone.js单页面局部刷新的代码。急,急,急

问题描述 求backbone.js单页面局部刷新的代码.急,急,急 我已经配置好backbone.js了,求路由部分的代码.主要是路由部分不会写,不知道怎么把view写到路由里面

浅析PHP页面局部刷新功能的实现小结_php技巧

方法其实挺多的.以前比较常用的是iframe这样来做.现在多了个ajax,所以一般情况下都是用的ajax.第一种方法,ajax实现:当然,ajax使用起来确实很简单就可以实现,但是里面的很多知识还是比较有点深的.我之前做页面时间自动刷新的功能就是用的ajax.完整代码是:1.getTime.php: 复制代码 代码如下: <?phpheader("cache-control:no-cache,must-revalidate");  header("Content-Typ

ASP.net页面局部刷新的情况下,后台代码在满足特定条件下如何弹出一个新的asp.net窗口

问题描述 ASP.net页面局部刷新的情况下,后台代码如何弹出一个新的asp.net窗口,Response.Write("<script>window.open('alarmdialog.aspx','newwindow','height=850,width=1300,top=150,left=500,toolbar=no,menubar=no,scrollbars=no,resizable=no,location=no,status=no')</script>"

使用js callback机制实现调用页面局部刷新

需求描述:审批表单页面由我的待办工作中打开,办理完毕后希望关闭该页面并且实现我待办表格的实时刷新;同时该需求也同样适用于从某些工作流管理模块中需要发起审批的情况,比如招聘需求模块中发起录用流程;我的绩效管理中审批绩效等. 我们先来看看之前的实现,该逻辑实现的功能是,从我待办列表中发起审批,审批结束后直接在当前页面,也就是审批页面跳转至一个新的oa主页面,并且打开我的工作-我待办的页签,实现方法如下: $("#but_back").bind("click", func

Ajax实现页面局部刷新示例代码小结

网页自动刷新功能在web网站上已经屡见不鲜了,如即时新闻信息,股票信息等,都需要不断获取最新信息.在传统的web实现方式中,想要实现类似的效果,必须进行整个页面的刷新,在网络速度受到一定限制的情况下,这种因为一个局部变动而牵动整个页面的处理方式显得有些得不偿失.Ajax技术的出现很好的解决了这个问题,利用Ajax技术可以实现网页的局部刷新,只更新指定的数据,并不更新其他的数据.    现在创建一个实例,以演示网页的自动刷新功能,该实例模拟火车侯票大厅的显示字幕. 1,服务器端代码 该实例服务器端

ASP.net页面局部刷新

问题描述 我想实现一个滚动条随数据库数据变化自己实时刷新,没有点击事件,怎么解决??求解<spanstyle="color:red"><asp:Labelid="count"runat="server"/></span><br/><li><spanstyle="color:red"><asp:Labelid="Label1"run

jquery 实现页面局部刷新ajax做法

这个方法就多了去了,常见的有以下几种: 下面介绍全页面刷新方法:有时候可能会用到 window.location.reload()刷新当前页面. parent.location.reload()刷新父亲对象(用于框架) opener.location.reload()刷新父窗口对象(用于单开窗口) top.location.reload()刷新最顶端对象(用于多开窗口) $.get方法,$.post方法,$.getJson方法,$.ajax方法如下 前两种使用方法基本上一样 复制代码 代码如下:

Jquery Ajax 提交表单 JSP页面局部刷新 javascript 中写的code不执行

问题描述 下面是我碰到的具体问题,一直很是郁闷!我贴下我的代码,如果解决了,小弟不甚感激...js 代码://ajax 执行成功的回调函数function showSuccess(data){alert('执行成功!!!');}function showError(){alert('出错啦!!!');}//ajax提交采购或者销售项function addGoodsItems(){if($("#goodsName").val() == ""){alert('货品不能

jsp中页面局部刷新

问题描述 层1   id="yi"层2  id="er"层3     id="san"现在有三个层 (数据都是用el表达式,从session总获取的数据),现在jsp页面请求了后台的类方法 改变了session中的数据 如何让层3这个层重新加载数据? 问题补充:<div id="san"> <c:forEach items="${sessionScope.sessvalue}" var=&