Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/apache-flex/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 如何将关联数组参数从javascript传递到ActiveX对象?_.net_Javascript_Com_Activex - Fatal编程技术网

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

.net 如何将关联数组参数从javascript传递到ActiveX对象?,.net,javascript,com,activex,.net,Javascript,Com,Activex,我想将一个关联数组(或者只是一个具有属性名和值的对象)传递给我的ActiveXObject。我找不到任何人成功地将复杂数据从javascript传递到ActiveX对象 我的ActiveX对象正在IE中加载,它是我的,所以我可以将方法签名和代码更改为任何可以工作的。我还可以控制javascript的结构 如果没有简单的方法,我会考虑url编码数据并将其作为字符串发送。但是,如果有可能只是通过一个物体,这看起来确实有点愚蠢 ActiveX对象是用C语言编码的,如果这有什么区别的话……我的Activ

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

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

如果没有简单的方法,我会考虑url编码数据并将其作为字符串发送。但是,如果有可能只是通过一个物体,这看起来确实有点愚蠢


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

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

理想情况下,您希望传入一个用作关联数组的
对象。但是COM不识别这种类型。COM确实支持
SafeArray
s,但JavaScript不理解它们


我们要么发送
join()
ed字符串,要么发送简单的Xml文档。您可能不需要DOM来生成xml,在receivign端,您可以将它们直接输入到您最喜欢的xml Api中(在C中,我推荐XDocument)

我的ActiveX/JavaScript知识有点过时,但ActiveX也是如此

理想情况下,您希望传入一个用作关联数组的
对象。但是COM不识别这种类型。COM确实支持
SafeArray
s,但JavaScript不理解它们


我们要么发送
join()
ed字符串,要么发送简单的Xml文档。您可能不需要DOM来生成xml,在receivign端,您可以将它们直接输入到您最喜欢的xml Api中(在C中,我推荐XDocument)

已经有一段时间了,但我记得对SafeArrays和对象做了类似的操作。这是一个特定于Microsoft Jscript的实现,但由于您使用的是ActiveX,因此可能值得研究。

已经有一段时间了,但我记得对SafeArrays和对象做了类似的操作。这是一个特定于Microsoft Jscript的实现,但由于您使用的是ActiveX,因此可能值得研究。

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

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

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

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

要将数据从javascript发送到ActiveXObject,请使用javascript中的JSON库对数据进行编码,然后使用.net中的JSON解析器读取数据


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

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

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

要将数据从javascript发送到ActiveXObject,请使用javascript中的JSON库对数据进行编码,然后使用.net中的JSON解析器读取数据


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

谢谢。我想在我的情况下,只使用name=value&anothername=anothervalue字符串会更快。但很高兴知道,我不必花几个小时寻找一个允许我使用复杂对象的解决方案。谢谢。我想在我的情况下,它会更快'只使用name=value&anothername=anothervalue字符串会更快。但很高兴知道我不应该花几个小时寻找一个允许我使用复杂对象的解决方案。我没有尝试过这一点,但它听起来像是一个很棒的解决方案。我没有尝试过这一点,但它听起来像是一个很棒的解决方案。+1:请注意,我们现在可以使用JavaScriptSerializer了。额外d可以避免对ActiveXObject的依赖。我想知道为什么没有追加投票。感谢我没有想到这个简单的解决方案。+1:请注意,我们现在可以使用JavaScriptSerializer。可以避免对ActiveXObject的额外依赖。我想知道为什么没有追加投票。感谢我没有想到这个简单的解决方案。