JS多参数的传递和调用

本文最后更新于2014年3月1日,已超过半年没有更新,如果内容失效,请反馈,谢谢!

最近在写一个ActiveX控件的时候,需要将ASP网页中的多个参数传递到中,再通过函数调用ActiveX控制(OCX)进行显示。有几种方法可以实现,主要用到ASB和很简单。

方法一:通过ASP动态刷新网页调用

这种方式要刷新当前页面,如果当前页demo.asp还有其它一些东些不便于刷新,那么可以把ASP获取外部参数的代码以及ActiveX的部分放在test.asp中用框架的方式引用过来,刷新时只会刷新框架

<iframe id="demo" name="demo" src="test.asp" frameborder="0" scrolling="no" width="520" height="400"></iframe>

而demo.asp页中除了放上面的框架的代码,还放链接传递参数给框架里的test.asp,每个参数用”&”分开

<a href="test.asp?loginip=192.168.1.5&loginport=8001&user=guest&password=guest&window=1&chanel=0" target="demo">成都在线演示</a>

test.asp页的代码包括ASP动态获取链接的代码和ActiveX的显示代码:

<%
'==================================
'从网页获取调用接口
'==================================
dim WindowMode,Text,PopupMenu,LoginIp,LoginPort,User,PassWord,Window,Chanel '变量分别为窗口模式,是否显示窗口说明,是否显示弹出菜单IP或域名,数据端口,用户,密码,当前窗口,连接通道
WindowMode=request("WindowMode")
if WindowMode="" then WindowMode=1
Text=request("Text")
if Text="" then Text=1
PopupMenu=request("PopupMenu")
if PopupMenu="" then PopupMenu=0
loginip=request("LoginIp")
loginport=request("LoginPort")
user=request("user")
Password=request("password")
window=request("window")
chanel=request("chanel")
%>
<script>
function loadmm()
{
//JS直接获取ASP的动态参数
TelCtl.ShowHintBar(<%=text%>); //显示窗口文本
TelCtl.ShowPopupMenu(<%=PopupMenu%>); //显示弹出菜单
 TelCtl.SetVideoMode(<%=WindowMode%>); //显示窗口模式,即几画面分割
TelCtl.SetCurrentVideoWindow(<%=Window%>); //显示当前窗口
TelCtl.SetLoginPort(<%=LoginPort%>); //显示数据端口
TelCtl.Login("<%=LoginIp%>","<%=User%>","<%=PassWord%>"); //登录
switch (TelCtl.Login("<%=LoginIp%>","<%=User%>","<%=PassWord%>")) {
case -1:
alert("连接服务器的用户过多,请稍后再试!");
break;
case -2:
alert("连接服务器失败!");
break;
case -5:
alert("网络不通,服务器地址或端口错误不能连接服务器,请稍后再试!");
break;
}
TelCtl.Connect("<%=LoginIp%>","<%=Chanel%>"); //连接
 }
function unloadmm()
{
//断开连接的函数
TelCtl.DisConnect();
}
</script>
</head>
<body onload=javascript:loadmm() onunload=Javascript:unloadmm()>
<object classid="clsid:DB6D5E21-AA44-4A1B-93F0-0748385A2D75" codebase="demo/WebView.CAB#version=1,0,0,12" name="TelCtl" width="512" height="384" hspace="0" vspace="0" align="center" id="DwmCtl">
</object>

上面的loadmm函数放在body中就可以在登录时直接调用了。

方法二:用纯JS实现当前页无刷新调用

写了一个JS函数放在head之间如下:

<script>
function play(loginip,user,password,loginport,chanel)
{
 //调用传递过来的多个参数,TelCtl为OCX对象
//alert(loginip+user+password+loginport+chanel);
TelCtl.SetLoginPort(loginport); //显示数据端口
TelCtl.Login(loginip,user,password); //登录
switch (TelCtl.Login(loginip,user,password))
{
//这里是登录返回值
   case -1:
alert("连接服务器的用户过多,请稍后再试!");
break;
case -2:
alert("连接服务器失败!");
break;
case -5:
alert("网络不通,服务器地址或端口错误不能连接服务器,请稍后再试!");
break;
}
TelCtl.Connect(loginip,chanel);//连接
}
</script>

在页面上有多个链接,每个链接对应不同的参数调用上述play()函数,这时我们可以把链接写为:

<a href=javascript:play('aipcd.vicp.net','guest','guest','8001','0')>成都在线演示</a>

下边找个地方放ActiveX控件的代码:

<object classid="clsid:DB6D5E21-AA44-4A1B-93F0-0748385A2D75" codebase="http://www.XXXX.com/demo/WebView.CAB#version=1,0,0,12" name="TelCtl" width="512" height="384" hspace="0" vspace="0" align="center" id="DwmCtl">
<img src="http://www.XXXX.com/demo/down.gif" width="512" height="384" hspace="0" vspace="0" align="center"> <!-这里是没下载控件时显示的图片->
</object>

通过这几段代码我们可以实现无刷新的在当前页面调用不同的参数给ActiveX控件。

当然现在都不这么整了,直接用jquery或ajax无刷新调用,界面好看,用户体验也很好。

除非注明,流浪天下 文章均为原创,转载请以链接形式注明出处。
本文链接地址:
订阅本站:http://maie.name/feed投稿联系:m[at]maie.name

猜你也喜欢:

共有 0 条评论

发表评论

电子邮件地址不会被公开。 必填项已用*标注