代码之家  ›  专栏  ›  技术社区  ›  Rory

如何将关联数组参数从javascript传递到ActiveX对象?

  •  1
  • Rory  · 技术社区  · 14 年前

    我想将一个关联数组(或者只是一个具有属性名和值的对象)传递给我的ActiveXObject。我找不到任何成功地简单地将复杂数据从javascript传递到ActiveX对象的人。

    我的ActiveX对象正在IE中加载,它是我的,因此我可以将方法签名和代码更改为任何可以工作的内容。我还可以控制JavaScript的结构。

    如果没有一个简单的方法来实现这一点,我会考虑URL编码数据并将其作为字符串发送。但如果能通过一个物体,那就显得有点傻了。

    ActiveX对象是用C编码的,如果这有什么区别…

    4 回复  |  直到 14 年前
        1
  •  2
  •   Rory    14 年前

    我发现最好的方法是来回发送JSON字符串。这对于简单数据和复杂数据都是非常简单的。

    要将数据从ActiveXObject发送到JavaScript,只需使用StringBuilder或类似工具将数据格式化为JSON。

    要将数据从javascript发送到ActiveXObject,请使用javascript中的JSON库对数据进行编码,然后使用.NET中类似的JSON解析器 JSON.Net 阅读它。

    或者,对于不需要JSON解析器的实际简单情况,可以使用URL编码的字符串。

        2
  •  1
  •   user180326    14 年前

    我的ActiveX/javascript知识有点过时,但ActiveX也是。

    理想情况下你想通过 Object 用作关联数组的。但COM无法识别此类型。COM支持 SafeArray 但它们不被javascript理解。

    我们最后也发了 join() 或者发送简单的XML文档。您可能不需要一个DOM来生成XML,在接收端,您可以直接将它们输入到您最喜欢的XML API(在C,I reccomend xdocument中)。

        3
  •  1
  •   tyranid    14 年前

    最快的方法可能是使用 Scripting.Dictionary 可通过JScript访问的COM对象,然后在您的C项目中包含对它的引用(如果没有列出,它将在scrun.dll中),然后指定IDictionary接口(不是System.Collections接口,是导入的COM库中的接口)作为函数的参数。然后,您可以使用键值关联字典。

        4
  •  0
  •   Garett    14 年前

    已经有一段时间了,但我记得我在安全阵列上做过类似的事情, VBArray 对象。这是一个特定于Microsoft JScript的实现,但是由于您使用的是ActiveX,因此可能值得研究。