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


  本文标签: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>