DLL对象:
TestPrj.Test
PublicSubTest(strName()AsVariant)
strName(0)="MR"
strName(1)="zhang"
EndSub
JavaScript:
<Scriptlanguage='JavaScript'>
varA=newArray();
varTest=newActiveObjectX("TestPrj.Test");
Test.Test(A);
Response.Write(A.length);
</Script>
请问出错在哪里????
---------------------------------------------------------------------------------------------------------------------------------------------------------
您可以在VB中建立AciveXdll,处理含数组参数的函数,在ASP中调用AciveX对象的函数。由于Javascript的array对象与VB中的array以不同的方式存储,因此Javascript的array对象作为VBActiveXdll函数的参数将出现类型不匹配的错误。建议您在ASP中用VBscript。
如下例,先在VB中建立AciveXdll工程,项目名为ASPArray,类名clsArray
PublicFunctionTestArray(ByRefvArrayAsVariant)AsString
DimnCntAsInteger
'Checkthattheargumentpassedisanarray
IfNotIsArray(vArray)Then
TestArray="ParameterisnotanArray"
ExitFunction
EndIf
FornCnt=LBound(vArray)ToUBound(vArray)
'changeArrayElement
vArray(nCnt)="aqqq"
NextnCnt
TestArray="ParameterisanArray"
EndFunction
在ASP中引用ASPArray.clsArray对象,
<%
DimoTestObj,vMyArray(2),vRtnValue
vMyArray(0)="Element1"
vMyArray(1)="Element2"
vMyArray(2)="Element3"
SetoTestObj=Server.CreateObject("ASPArray.clsArray")
vRtnValue=oTestObj.TestArray(vMyArray)
Response.Write(vRtnValue)
%>
vMyArray(1)=<%=vMyArray(1)%>
详细信息请参考以下链接:
HOWTO:ImplementArrayArgumentsinVBCOMObjectsforASP
http://support.microsoft.com/support/kb/articles/q217/1/14.asp
您可以使用JavaScript中vbArray对象的toArray()方法把VBScript的数组(Array)转化为Javascript数组,但是截至到目前VBScript(4.0)版,还没有把JavaScript数组转化为VBscript数组的方法。
详细信息请参考以下文档中PassingArraysfromVBScripttoJscript部分:
UsingVBScriptandJScriptonaWebPage
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnvid/html/msdn_vbnjscrpt.asp