I'm trying to call a C# method from JavaScript by using ActiveXObject
:
var myobj = new ActiveXObject('myobject');
var arr = myobj.GetArray();
Eventually, arr
will contain a SAFEARRAY
object, but not JScript
array. Is there any way to return native JavaScript object from a C# method?
I'm trying to call a C# method from JavaScript by using ActiveXObject
:
var myobj = new ActiveXObject('myobject');
var arr = myobj.GetArray();
Eventually, arr
will contain a SAFEARRAY
object, but not JScript
array. Is there any way to return native JavaScript object from a C# method?
4 Answers
Reset to default 8You can return a JSON string and then parse into a JavaScript object. There are a number of .NET libraries available to serialize .NET objects into JSON and vice-versa-
- JSON.NET
- Microsoft ASP.NET AJAX library
- JSONSharp
to name a few.
This question and answer may be of use to you
I found the solution by myself, but no documentation exists for this part.
The solution is to use JScript.ArrayObject
in the following way:
ArrayObject _lastField;
byte[] byteArray = new byte[]{2,1,2,3};
object[] array = new object[byteArray.Length];
byteArray.CopyTo(array, 0);
_lastField = Microsoft.JScript.GlobalObject.Array.ConstructArray(array);
After that you will be able to use the _lastField
array in JavaScript like a native array:
var myobj = new ActiveXObject('myobject');
var arr = myobj.LastField;
alert(arr[1]);
You may return delimited Joined String in C# and can split into JavaScript
//C#
public string getArryString()
{
string[] arrstring = new string[]{"1","2","3"};
return string.Join(",", arrstring);
}
//Javascript
var arrstring = objActiveX.getArryString().split(',');
Via VBArray it can work like this:
Return object[] from C# (declare so in the dispinterface).
To get a native JS array in JScript use VBArray:
var jsArray = new VBArray(myobj.GetArray()).toArray(); for (i = 0; i < jsArray.length; i++) { // use jsArray[i] }
Background information:
JScript supports SafeArrays of Variants only http://blogs.msdn./b/jaiprakash/archive/2007/01/09/jscript-supports-safearrays-of-variants-only.aspx
Eric's Complete Guide To Type Signatures Of Scriptable Object Models http://blogs.msdn./b/ericlippert/archive/2004/07/14/183241.aspx