⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 0147.htm

📁 ASP教程宝典 书籍语言: 简体中文 书籍类型: 网络编程 授权方式: 免费软件 书籍大小: 500 KB
💻 HTM
字号:
<html>

<head>
<title>新时代软件教程:操作系统 主页制作 服务器 设计软件 网络技术 编程语言 文字编辑</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<style>
<!--
body, table {font-size: 9pt; font-family: 宋体}
a {text-decoration:none}
a:hover {color: red;text-decoration:underline}
.1  {background-color: rgb(245,245,245)}
-->
</style>
</head>
<p align="center"><script src="../../1.js"></script></a>
    <p align="center"><big><strong>如何在不刷新页面的情况下调用远程ASP</strong></big></p>

<div align="right">---摘自互联网</div>

&nbsp;&nbsp;&nbsp;&nbsp;RS技术的一个具体例子<br>
&nbsp;&nbsp;&nbsp;&nbsp;在前面的帖子中,我介绍了RS的基本工作原理,显然如果将RS技术运用在一个<br>
网站的设计中将会有很多非凡的作用(尤其是它的那个最大的优点,可以在不刷新<br>
页面的情况下调用服务端的代码)。正是因为这个特点,你就可以象在编写一个<br>
传统的C/S模式的程序一样,对数据库的数据进行处理了(我想大家一定很想知道具体应该如何来实现了,下面将给出一个具体的例子,调试这个破程序几乎快把我给累死,呵呵。)<br>
&nbsp;&nbsp;&nbsp;&nbsp;从前面的描述可以看到,要使用RS技术就需要客户端和服务端满足下面两个条件:<br>
1。客户端只需要支持Java applet即可<br>
2。而服务端只需要支持ASP即可<br>
换句话说,就是RS技术是完全独立与浏览器的(当然浏览器至少需要满足支持Java<br>
和JavaScript),你可以在IE中使用,也可以完全在<br>
NC中使用,这也是区别与RDS技术的一个显著特点。<br>
&nbsp;&nbsp;&nbsp;&nbsp;在能够灵活运用RS技术前,先要说明一个问题,就是前面也曾经提到过的“异步调用”<br>
的问题。也正是因为有异步调用,才能够实现你只刷新页面的某一部分而不用刷新<br>
整个页面。<br>
&nbsp;&nbsp;&nbsp;&nbsp;由于它的这个特点,你可以让服务端来实现在你浏览页面的同时<br>
对你输入数据的合法性检查(当然这可以是一系列很复杂的合法性检查,例如需要<br>
将用户输入的数据和数据库内已有的数据进行对比等,这个可不是客户端的JS能够解决的)<br>
然后当服务端返回检查结果后,你再进行相应的操作(例如弹出一个对话框告诉用户<br>
输入出错等等)<br>
异步调用时的语法如下:<br>
RSExecute(serverURL, functionname, param_list)<br>
第一个参数是你想调用的asp页面的完整的URL路径<br>
第二个参数是你想调用函数的名称<br>
后面的就是该函数需要的输入参数了<br>
&nbsp;&nbsp;&nbsp;&nbsp;如果你想调用的函数需要两个输入参数的话,就是这样的写法:<br>
RSExecute(serverURL, functionname, f_arg_1, f_arg_2)<br>
当进行调用时有两种写法,<br>
&nbsp;&nbsp;&nbsp;&nbsp;一种是有返回结果的调用方式:<br>
&nbsp;&nbsp;&nbsp;&nbsp;objResult = RSExecute(serverURL, functionname, f_arg_1, f_arg_2);<br>
&nbsp;&nbsp;&nbsp;&nbsp;另外一种则是没有返回结果的调用方式:<br>
&nbsp;&nbsp;&nbsp;&nbsp;RSExecute(url, func_name, f_arg_1, f_arg_2, CallbackFunction);<br>
这种调用方式要特别的注意,其中的CallbackFunction是客户端的一个JS函数<br>
它表示一但RS执行完毕服务端上的调用,就会马上调用这个函数,并把结果返回到这个<br>
函数中去。<br>
&nbsp;&nbsp;&nbsp;&nbsp;一个典型的CallbackFunction函数应该是这样的结构:<br>
function CallbackFunction(objResult) {<br>
//你自己的处理过程<br>
} <br>
其中唯一的输入参数objResult就是RS调用的返回值.<br>
&nbsp;&nbsp;&nbsp;&nbsp;下面我们假设这样一种情况:<br>
&nbsp;&nbsp;&nbsp;&nbsp;用户在浏览器中输入了用户的e-mail地址,然后用户离开了e-mail地址输入框<br>
进入接下来的输入过程,这个时候就是RS该上场了,它根据用户输入的地址在<br>
服务端的数据库中查询这个地址,就可以判断出这个用户是否已经存在,然后<br>
把结果返回给客户端,在客户端再使用DHTML技术在一个叫&quot;ShowResult&quot;的输入框<br>
里面提示用户以前输入的信息。<br>
function CallbackFunc(objResult) {<br>
&nbsp;&nbsp;&nbsp;// 提示用户的信息<br>
&nbsp;&nbsp;&nbsp;window[objResult.context].value = objResult.return_value;<br>
} <br>
而RSExecute()应该这么调用<br>
RSExecute(serverURL, functionname, f_arg_1, CallbackFunc, &quot;ShowResult&quot;);<br>
&nbsp;&nbsp;&nbsp;&nbsp;不说了,不说了,上面罗嗦了这么多,我想大家也都看得头大了,下面还是<br>
让具体的代码来发言把:<br>
(<b>请在使用代码前在你的服务器上建立一个叫NW的系统DSN文件,该文件使用了<br>
Northworld即中文ACCESS97自带的示例数据库</b>)<br>
&nbsp;&nbsp;&nbsp;&nbsp;下面的例子是这么进行的,default.htm中分为两祯,在<br>
main.html页面中使用了RS技术,大家可以注意到在main.html中没有使用到submit<br>
所以如果你在该页面中直接敲回车键的话什么都不会出现,你必须通过鼠标单击<br>
那个&quot;获取信息&quot;按扭来使用这个局部页面刷新技术。在单击完该按扭后,页面会有<br>
一段小小的延迟(这段时间内java applet在后台建立了和服务端的连接)<br>
然后马上页面回复正常的鼠标,你可以在该页面中继续进行其他的操作。<br>
而不必象普通页面刷新时,你只有等待数据。<br>
而info.asp大家一眼就能够看明白,其实就是一个很简单的处理字符串的程序。<br>
如果大家要是对DHTML技术熟悉的话,完全可以在客户端完成这些操作。<br>
至于EmpData.asp就是服务端处理数据的程序了。<br>
好了,其中的好处大家可以自己去<br>
体会。<br>
<br>
<b>特别注意,不要改变太多代码,不然很容易出错,毕竟是在使用JavaScript编程</b><br>
<br>
Default.htm文件代码如下:<br>
&lt;HTML&gt;<br>
&lt;HEAD&gt;<br>
&lt;TITLE&gt;RS技术的实现例子&lt;/TITLE&gt;<br>
&lt;/HEAD&gt;<br>
&lt;FRAMESET id=fset rows=&quot;70%,30%&quot;&gt;<br>
&nbsp;&nbsp;&lt;FRAME name=main src=&quot;main.html&quot;&gt; <br>
&nbsp;&nbsp;&lt;FRAME name=info src=&quot;info.asp&quot;&gt; <br>
&lt;/FRAMESET&gt;<br>
&lt;/HTML&gt;<br>
<br>
Maim.html文件代码如下<br>
&lt;HTML&gt;<br>
&lt;HEAD&gt;<br>
&lt;TITLE&gt;RS技术的实现例子&lt;/TITLE&gt;<br>
&lt;/HEAD&gt;<br>
&lt;BODY&gt;<br>
&lt;script language=&quot;JavaScript&quot; src=&quot;http://YourServer/_ScriptLibrary/rs.htm&quot;&gt;&lt;/script&gt;<br>
&lt;script language=&quot;JavaScript&quot;&gt;<br>
RSEnableRemoteScripting(&quot;http://YourServer/_ScriptLibrary&quot;);<br>
&lt;/script&gt;<br>
&lt;h1&gt;雇员信息&lt;/h1&gt;<br>
&lt;hr&gt;<br>
&lt;form name=MyForm&gt;<br>
请输入你想查询的名字:<br>
&lt;br&gt;&lt;input type=text name=&quot;empLastName&quot; size=40&gt; <br>
&lt;input type=button name=btnExecute style=&quot;width=150&quot;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;value=&quot;获取信息&quot; <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;onclick=&quot;execAsynch(empLastName.value)&quot;&gt;<br>
&lt;/form&gt;<br>
&lt;hr&gt;<br>
<br>
&lt;SCRIPT LANGUAGE=&quot;javascript&quot;&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;var serverURL = &quot;http://YourServer&quot;;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var pageURL&nbsp;&nbsp;&nbsp;= &quot;/batman/EmpData.asp&quot;;<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;function refreshPage(co)<br>
&nbsp;&nbsp;&nbsp;&nbsp;{<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (co.status != 0) {<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;alert(&quot;发生异常错误\n&quot; + <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;message);<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;strText = co.return_value;&nbsp;&nbsp;&nbsp;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;top.info.location = &quot;info.asp?info=&quot; + escape(strText);<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>
&nbsp;&nbsp;&nbsp;&nbsp;function execAsynch(empLastName)<br>
&nbsp;&nbsp;&nbsp;&nbsp;{<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;RSExecute(serverURL+pageURL, &quot;GetEmpInfoAsArray&quot;, <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;empLastName, refreshPage);<br>
&nbsp;&nbsp;&nbsp;&nbsp;}<br>
&lt;/SCRIPT&gt;<br>
&lt;/BODY&gt;<br>
&lt;/HTML&gt;<br>
<br>
info.asp文件代码<br>
&lt;HTML&gt;<br>
&lt;BODY&gt;<br>
&lt;%<br>
Response.Write Request.ServerVariables(&quot;REMOTE_USER&quot;) <br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;strText = Request.QueryString(&quot;info&quot;)<br>
&nbsp;&nbsp;&nbsp;&nbsp;If strText = &quot;&quot; Then Response.End<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;arrData = split(strText, &quot;|&quot;)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;arrLabels = split(&quot;职工,头衔,城市,雇佣日期&quot;, &quot;,&quot;)<br>
%&gt;<br>
&lt;table border=0&gt;<br>
&lt;% <br>
&nbsp;&nbsp;&nbsp;&nbsp;for i=0 to 3<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Response.Write &quot;&lt;tr&gt;&quot;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Response.Write &quot;&lt;td&gt;&lt;b&gt;&quot; &amp; arrLabels(i) &amp; &quot;&lt;/b&gt;&lt;/td&gt;&quot; <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Response.Write &quot;&lt;td&gt;&lt;i&gt;&quot; &amp; arrData(i) &amp; &quot;&lt;/i&gt;&lt;/td&gt;&quot; <br>
&nbsp;&nbsp;&nbsp;&nbsp;next<br>
%&gt;<br>
&lt;/table&gt;<br>
&lt;/BODY&gt;<br>
&lt;/HTML&gt;<br>
<br>
EmpData.asp文件<br>
&lt;%@ LANGUAGE=VBSCRIPT %&gt;<br>
&lt;% RSDispatch %&gt;<br>
<br>
&lt;SCRIPT RUNAT=SERVER Language=javascript&gt;<br>
&lt;!--#INCLUDE VIRTUAL=&quot;/_ScriptLibrary/RS.ASP&quot;--&gt;<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;function Description()<br>
&nbsp;&nbsp;&nbsp;&nbsp;{ <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this.GetEmpInfoAsArray = DoGetData;<br>
&nbsp;&nbsp;&nbsp;&nbsp;}<br>
&nbsp;&nbsp;&nbsp;&nbsp;public_description = new Description();<br>
<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;function DoGetData(empName)<br>
&nbsp;&nbsp;&nbsp;&nbsp;{<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sql = &quot;select * from 雇员 where [名字]='&quot; + empName + &quot;'&quot;;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rst = new ActiveXObject(&quot;ADODB.Recordset&quot;);<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rst.CursorLocation = 3;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rst.Open(sql, &quot;NW&quot;);<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;i = 0;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;strText = &quot;&quot;;<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (rst.RecordCount == 1)&nbsp;&nbsp;{<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;strText += rst.Fields(&quot;雇员ID&quot;).Value + &quot; - &quot; +<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rst.Fields(&quot;尊称&quot;).Value + &quot; &quot; + <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rst.Fields(&quot;姓氏&quot;).Value + &quot; &quot; + <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rst.Fields(&quot;名字&quot;).Value;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;strText += &quot;|&quot;;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;strText += rst.Fields(&quot;头衔&quot;).Value;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;strText += &quot;|&quot;;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;strText += rst.Fields(&quot;城市&quot;).Value + &quot; &quot; + <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rst.Fields(&quot;地区&quot;).Value + &quot;, &quot; +<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rst.Fields(&quot;国家&quot;).Value;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;strText += &quot;|&quot;;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;d = new Date(rst.Fields(&quot;雇用日期&quot;).Value);<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;strText += (1+d.getMonth()) + &quot;/&quot; + d.getDate() + &quot;/&quot; + d.getYear();<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return strText;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>
&lt;/SCRIPT&gt;</p>

  </table>
<p align="center"><script src="../../2.js"></script></a>
</body>
</html>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -