调用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>

调用C#组件时,在javascript中键入不匹配错误

JavaScript只能使用COM的Automation兼容子集。整数数组不属于该子集。

您需要返回VARIANT的SAFEARRAY才能与JavaScript兼容,或者返回一个具有IEnumVariant接口的对象(因此foreach有效),以及具有索引默认属性的IDispatch(因此使用方括号进行索引有效)。