2010-06-16 5 views
1

내 ActiveXObject에 연관 배열 (또는 단순히 속성 이름이 & 인 개체)을 전달하고 싶습니다. 나는 성공적으로 간단하게 복잡한 데이터를 javascript에서 ActiveX 객체로 전달한 사람을 찾을 수 없습니다.javascript의 연관 배열 매개 변수를 ActiveX 객체에 전달하는 방법은 무엇입니까?

내 ActiveX 개체가 IE에로드되고있어 내 것이므로 어떤 방법 으로든 메서드 서명 & 코드를 변경할 수 있습니다. 나는 또한 자바 스크립트의 구조를 제어 할 수있다.

이렇게하는 간단한 방법이 없으면 데이터 인코딩을 URL 인코딩으로 생각하고 문자열로 보냅니다. 그러나 그것은 단지 객체를 전달하는 것이 가능하다면 약간 어리석은 것처럼 보입니다.

그 어떤 차이가있는 경우 ActiveX 객체가 C#으로 코딩

...

답변

2

이 작업을 수행하는 가장 좋은 방법은 JSON 문자열을 다시 &으로 보내는 것입니다. 이는 단순한 데이터와 복잡한 데이터 모두에 대해 매우 간단합니다.

ActiveXObject에서 javascript로 데이터를 보내려면 StringBuilder 등을 사용하여 데이터를 JSON으로 포맷하십시오.

자바 스크립트에서 ActiveXObject로 데이터를 보내려면 자바 스크립트에서 JSON 라이브러리를 사용하여 데이터를 인코딩 한 다음 JSON.Net과 같은 .net의 JSON 파서를 사용하십시오.

또는 JSON 파서가 필요없는 단순한 경우에는 URL 인코딩 된 문자열을 사용할 수 있습니다.

+0

+1 : 이제 JavaScriptSerializer를 사용할 수 있습니다. ActiveXObject에 대한 추가 종속성을 피할 수 있습니다. 나는 이것이 왜 득표가 없는지 궁금해. 나에게 발생하지 않았던이 간단한 해결책에 감사드립니다. – naveen

1

내 액티브/자바 스크립트에 대한 지식이 조금 일자,하지만 그래서 액티브 X는 ...

가 이상적으로 당신이 원하는 것 연관 배열로 사용하는 Object을 전달하십시오. 그러나 COM은이 유형을 인식하지 못합니다. COM은 SafeArray을 지원하지만 자바 스크립트에서는 이해할 수 없습니다.

우리는 join() ed 문자열을 보내거나 간단한 Xml 문서를 보내는 것으로 끝났습니다. 아마도 XML을 생성하는 데 DOM이 필요하지 않으며 수신 측에서는 원하는 Xml API (C#에서는 XDocument를 권장합니다)에 직접 피드를 제공 할 수 있습니다.

+0

감사합니다. 내 경우에는 name = value & anothername = anothervalue 문자열을 사용하는 것이 더 빠를 것이라고 생각합니다. 그러나 내가 복잡한 객체를 사용할 수있는 솔루션을 찾기 위해 몇 시간을 검색해야하는 것은 아닙니다. – Rory

0

오래되었지만 SafeArrays 및 VBArray 개체와 비슷한 작업을 수행 한 것을 기억합니다. 그것은 Microsoft Jscript의 특정 구현이지만, ActiveX를 사용하고 있으므로 보람있는 가치가 있습니다.

1

가장 빠른 방법은 아마도 JScript를 통해 액세스 할 수있는 Scripting.Dictionary COM 개체를 사용하는 것입니다. 그런 다음 C# 프로젝트에이 개체에 대한 참조를 포함하고 (나열되지 않은 경우 scrrun.dll에 있음) IDictionary 인터페이스 (System.Collections가 아닌 가져온 COM 라이브러리에서 가져온 API)를 함수의 매개 변수로 사용하십시오. 그런 다음 키 - 값 연관 사전을 사용할 수 있습니다.

+0

나는 이것을 시도하지는 않았지만 훌륭한 해결책처럼 들린다. – Rory

관련 문제