您所在的位置: 首页>>开发>>.Net>>asp.net>>

不刷新页面的情况下调用ASP

http://developer.51cto.com  2005-09-16 14:56  追风  chinabs.net  我要评论(0)
  • 摘要:RS技术最大的优点是可以在不刷新页面的情况下调用服务端的代码,因此就可以象在编写一个传统的C/S模式的程序一样,对数据库的数据进行处理了。
  • 标签:ASP

如果将RS技术运用在一个网站的设计中将会有很多作用(尤其是它的那个最大的优点,可以在不刷新页面的情况下调用服务端的代码)。正是因为这个特点,你就可以象在编写一个传统的C/S模式的程序一样,对数据库的数据进行处理了。从前面的描述可以看到,要使用RS技术就需要客户端和服务端满足下面两个条件:客户端只需要支持Java applet即可和服务端只需要支持ASP即可。 

下面还是让具体的代码来发言:

(请在使用代码前在你的服务器上建立一个叫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="获取信息" 
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("发生异常错误\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> 


专题:ASP.NET 2.0基础开发指南
微软的Ajax:Atlas(ASP.net AJAX)
ASP.NET开发教程
ASP实用开发教程
走向银光 —— 一步一步学Silverlight2
 
 验证码: (点击刷新验证码)   匿名发表
  • Visual C++ 6.0完全自学宝典

  • 作者:强锋科技,朱洪波
  • Visual C++ 6.0是微软公司为程序人员提供的Visual Studio 6.0工具套件中的重要组成部分。本书由浅入深地介绍使用Visual C++ 6.0..
Copyright©2005-2008 51CTO.COM 版权所有