AutoIt
AutoIt
Call a JavaScript Function Returning an Array
See more JavaScript Examples
Demonstrates how to call a JavaScript function that returns an array.Chilkat AutoIt Downloads
Local $bSuccess = False
; ----------------------------------------------------------------------------------
; The Javascript functions called in this example are shown at the bottom of this page.
; -----------------------------------------------------------------------------------
$oSbScript = ObjCreate("Chilkat.StringBuilder")
$bSuccess = $oSbScript.LoadFile("js_function_returning_array.js","utf-8")
If ($bSuccess = False) Then
ConsoleWrite($oSbScript.LastErrorText & @CRLF)
Exit
EndIf
$oJs = ObjCreate("Chilkat.Js")
$oResult = ObjCreate("Chilkat.JsonObject")
$oResult.EmitCompact = False
; Call Eval to add the function to the context's global object
$bSuccess = $oJs.Eval($oSbScript,$oResult)
If ($bSuccess = False) Then
; Examine the result for an exception.
ConsoleWrite($oResult.Emit() & @CRLF)
; Also examine the LastErrorText.
ConsoleWrite($oJs.LastErrorText & @CRLF)
Exit
EndIf
; ------------------------------------------------------------------------------
; Call each function
$oFuncCall = ObjCreate("Chilkat.JsonObject")
; Create JSON specifying the function name and arguments
; The function has no arguments, so we only specify the name.
$oFuncCall.UpdateString("name","getDays")
$bSuccess = $oJs.CallFunction($oFuncCall,$oResult)
If ($bSuccess = False) Then
; Examine the result for an exception.
ConsoleWrite($oResult.Emit() & @CRLF)
; Also examine the LastErrorText.
ConsoleWrite($oJs.LastErrorText & @CRLF)
Exit
EndIf
ConsoleWrite($oResult.Emit() & @CRLF)
; Output:
; {
; "type": "array",
; "value": [
; "Monday",
; "Tuesday",
; "Wednesday",
; "Thursday",
; "Friday"
; ]
; }
; Access each array value..
Local $iCount = $oResult.SizeOfArray("value")
Local $i = 0
While $i < $iCount
$oResult.I = $i
ConsoleWrite($oResult.StringOf("value[i]") & @CRLF)
$i = $i + 1
Wend
; ------------------------------------------------------------------------------
; Call the getRange(start,end) function
$oFuncCall.Clear
$oFuncCall.UpdateString("name","getRange")
$oFuncCall.UpdateInt("args[0]",14)
$oFuncCall.UpdateInt("args[1]",21)
$bSuccess = $oJs.CallFunction($oFuncCall,$oResult)
ConsoleWrite($oResult.Emit() & @CRLF)
; Output:
; {
; "type": "array",
; "value": [
; 14,
; 15,
; 16,
; 17,
; 18,
; 19,
; 20,
; 21
; ]
; }
$iCount = $oResult.SizeOfArray("value")
$i = 0
While $i < $iCount
$oResult.I = $i
ConsoleWrite($oResult.IntOf("value[i]") & @CRLF)
$i = $i + 1
Wend
; ------------------------------------------------------------------------------
; Call the getEmployees() function
$oFuncCall.Clear
$oFuncCall.UpdateString("name","getEmployees")
$bSuccess = $oJs.CallFunction($oFuncCall,$oResult)
ConsoleWrite($oResult.Emit() & @CRLF)
; Output:
; {
; "type": "array",
; "value": [
; {
; "id": 101,
; "name": "Alice",
; "role": "Dev"
; },
; {
; "id": 102,
; "name": "Bob",
; "role": "Manager"
; }
; ]
; }
$iCount = $oResult.SizeOfArray("value")
$i = 0
While $i < $iCount
$oResult.I = $i
ConsoleWrite("name: " & $oResult.StringOf("value[i].name") & @CRLF)
ConsoleWrite("role: " & $oResult.StringOf("value[i].role") & @CRLF)
ConsoleWrite("id: " & $oResult.IntOf("value[i].id") & @CRLF)
ConsoleWrite("" & @CRLF)
$i = $i + 1
Wend