簡體   English   中英

如何將關聯數組參數從javascript傳遞給ActiveX對象?

[英]How to pass associative Array parameter from javascript to ActiveX object?

我想將一個關聯數組(或只是一個帶有屬性名和值的對象)傳遞給我的ActiveXObject。 我找不到任何成功的人,只是簡單地將復雜的數據從javascript傳遞給ActiveX對象。

我的ActiveX對象正在IE中加載,它是我的,所以我可以將方法簽名和代碼更改為任何可行的。 我也控制了javascript的結構。

沒有一個簡單的方法,我正在考慮對數據進行url編碼並將其作為字符串發送。 但是,如果只是傳遞一個對象,那似乎有點傻。

ActiveX對象用C#編碼,如果這有什么不同......

我發現最好的方法是來回發送JSON字符串。 這對於簡單數據和復雜數據都非常簡單。

要將ActiveXObject中的數據發送到javascript,只需使用StringBuilder或類似的方法將數據格式化為JSON。

要將數據從javascript發送到ActiveXObject,請使用javascript中的JSON庫對數據進行編碼,然后使用.net中的JSON解析器(如JSON.Net)來讀取它。

或者,對於您不需要JSON解析器的真實簡單情況,您可以使用URL編碼的字符串。

我的ActiveX / JavaScript知識有點過時,但ActiveX也是如此......

理想情況下,您需要傳入一個用作關聯數組的Object 但COM不承認這種類型。 COM確實支持SafeArray但JavaScript並不理解它們。

我們最終發送了join() ed字符串或發送簡單的Xml文檔。 您可能不需要DOM來生成xml,並且在接收方面,您可以將它們直接提供給您喜歡的Xml Api(在C#中,我推薦XDocument)。

最快的方法可能是使用可以通過JScript訪問的Scripting.Dictionary COM對象,然后在C#項目中包含對它的引用(如果未列出它將在scrrun.dll中),則指定IDictionary接口(不是System.Collections一個,導出的COM庫中的一個)作為函數的參數。 然后你就可以得到一個鍵值關聯詞典。

已經有一段時間了,但我記得用SafeArrays和VBArray對象做類似的事情。 這是Microsoft Jscript特定的實現,但由於您使用ActiveX,因此可能值得研究。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM