调用C#组件时,在javascript中键入不匹配错误
本文关键字:不匹配 错误 javascript 组件 调用 | 更新日期: 2023-09-27 18:27:33
我在C#中创建了一个Com组件,并尝试在Javascript中访问。
我的C#方法是
Class myComComponent
{
private int[] nAllData;
public int[] GetArray(int index)
{
//Some Logic here that will return integer type of array{1,12,15,48,1452,45}
return nAllData;
}
}
从javascript调用它,但它给了我一个类型不匹配的错误。
Javascript代码
function MyComComponent_onload() {
try {
var nAllData = new Array();
for (var i = 0; i<= 5; i++)
{
nAllData.push(myComComponent.GetArray(i));
}
}
catch (err)
{
alert(err.message);
}
}
<html>
<head>
<object id="myComComponent" name="myComComponent" classid="clsid:4794D615-BE51-4A1E-B1BA-453F6E9337C4">
</head>
<body onload="MyComComponent_onload();">
//// Html Code goes here
</body>
<html>
JavaScript只能使用COM的Automation兼容子集。整数数组不属于该子集。
您需要返回VARIANT的SAFEARRAY才能与JavaScript兼容,或者返回一个具有IEnumVariant接口的对象(因此foreach有效),以及具有索引默认属性的IDispatch(因此使用方括号进行索引有效)。