关于javascript数组与VB DLL中中数组的传递问题
2010-09-14 13:07:21 来源:WEB开发网各位:我现在在JavaScript中定义一个一维数组,然后调用VB编写的DLL对象,在DLL对象给此数组赋值,然后在JavaScript读出已经赋值的数组。请问如何操作。
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)
%> <br>
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
-微软全球技术中心VB技术支持
本贴子以“现状”提供且没有任何担保,同时也没有授予任何权利。具体事项可参见使用条款
(http://support.microsoft.com/directory/worldwide/zh-cn/community/terms_chs.asp)。
为了为您创建更好的讨论环境,请参加我们的用户满意度调查
(http://support.microsoft.com/directory/worldwide/zh-cn/community/survey.asp?key=(S,49854782))。
Tags:关于 javascript 数组
编辑录入:爽爽 [复制链接] [打 印]更多精彩
赞助商链接