Sample code for 30+ languages & platforms
C#

Call a JavaScript Function Returning an Array

See more JavaScript Examples

Demonstrates how to call a JavaScript function that returns an array.

Chilkat C# Downloads

C#
bool success = false;

// ----------------------------------------------------------------------------------
// The Javascript functions called in this example are shown at the bottom of this page.
// -----------------------------------------------------------------------------------

Chilkat.StringBuilder sbScript = new Chilkat.StringBuilder();
success = sbScript.LoadFile("js_function_returning_array.js","utf-8");
if (success == false) {
    Debug.WriteLine(sbScript.LastErrorText);
    return;
}

Chilkat.Js js = new Chilkat.Js();

Chilkat.JsonObject result = new Chilkat.JsonObject();
result.EmitCompact = false;

// Call Eval to add the function to the context's global object
success = js.Eval(sbScript,result);
if (success == false) {
    // Examine the result for an exception.
    Debug.WriteLine(result.Emit());

    // Also examine the LastErrorText.
    Debug.WriteLine(js.LastErrorText);
    return;
}

// ------------------------------------------------------------------------------
// Call each function

Chilkat.JsonObject funcCall = new Chilkat.JsonObject();

// Create JSON specifying the function name and arguments
// The function has no arguments, so we only specify the name.

funcCall.UpdateString("name","getDays");

success = js.CallFunction(funcCall,result);
if (success == false) {
    // Examine the result for an exception.
    Debug.WriteLine(result.Emit());

    // Also examine the LastErrorText.
    Debug.WriteLine(js.LastErrorText);
    return;
}

Debug.WriteLine(result.Emit());

// Output:
// {
//   "type": "array",
//   "value": [
//     "Monday",
//     "Tuesday",
//     "Wednesday",
//     "Thursday",
//     "Friday"
//   ]
// }

// Access each array value..
int count = result.SizeOfArray("value");
int i = 0;
while (i < count) {
    result.I = i;
    Debug.WriteLine(result.StringOf("value[i]"));
    i = i + 1;
}

// ------------------------------------------------------------------------------
// Call the getRange(start,end) function

funcCall.Clear();
funcCall.UpdateString("name","getRange");
funcCall.UpdateInt("args[0]",14);
funcCall.UpdateInt("args[1]",21);
success = js.CallFunction(funcCall,result);
Debug.WriteLine(result.Emit());

// Output:
// {
//   "type": "array",
//   "value": [
//     14,
//     15,
//     16,
//     17,
//     18,
//     19,
//     20,
//     21
//   ]
// }

count = result.SizeOfArray("value");
i = 0;
while (i < count) {
    result.I = i;
    Debug.WriteLine(Convert.ToString(result.IntOf("value[i]")));
    i = i + 1;
}

// ------------------------------------------------------------------------------
// Call the getEmployees() function

funcCall.Clear();
funcCall.UpdateString("name","getEmployees");
success = js.CallFunction(funcCall,result);
Debug.WriteLine(result.Emit());

// Output:
// {
//   "type": "array",
//   "value": [
//     {
//       "id": 101,
//       "name": "Alice",
//       "role": "Dev"
//     },
//     {
//       "id": 102,
//       "name": "Bob",
//       "role": "Manager"
//     }
//   ]
// }

count = result.SizeOfArray("value");
i = 0;
while (i < count) {
    result.I = i;
    Debug.WriteLine("name: " + result.StringOf("value[i].name"));
    Debug.WriteLine("role: " + result.StringOf("value[i].role"));
    Debug.WriteLine("id: " + Convert.ToString(result.IntOf("value[i].id")));
    Debug.WriteLine("");
    i = i + 1;
}