![]() |
Chilkat HOME Android™ AutoIt C C# C++ Chilkat2-Python CkPython Classic ASP DataFlex Delphi DLL Go Java JavaScript Node.js Objective-C PHP Extension Perl PowerBuilder PowerShell PureBasic Ruby SQL Server Swift Tcl Unicode C Unicode C++ VB.NET VBScript Visual Basic 6.0 Visual FoxPro Xojo Plugin
(DataFlex) Call a JavaScript Function Passing an Array ArgumentSee more JavaScript ExamplesDemonstrates how to call a JavaScript function with an argument that is an array.Note: This example requires Chilkat v11.4.0 or greater.
Use ChilkatAx-win32.pkg Procedure Test Boolean iSuccess Variant vSbScript Handle hoSbScript Handle hoJs Variant vResult Handle hoResult Variant vFuncCall Handle hoFuncCall Variant vArgsArray Handle hoArgsArray Variant vArg Handle hoArg Variant vSbOut Handle hoSbOut String sTemp1 Move False To iSuccess // This is the JavaScript function we'll call: // function calculateTotal(numbers) { // console.log(numbers); // let total = 0; // // // Loop through every number in the array // for (const num of numbers) { // console.log(num); // total += num; // } // // return total; // } Get Create (RefClass(cComChilkatStringBuilder)) To hoSbScript If (Not(IsComObjectCreated(hoSbScript))) Begin Send CreateComObject of hoSbScript End Get ComLoadFile Of hoSbScript "js_function_array_arg.js" "utf-8" To iSuccess If (iSuccess = False) Begin Get ComLastErrorText Of hoSbScript To sTemp1 Showln sTemp1 Procedure_Return End Get Create (RefClass(cComChilkatJs)) To hoJs If (Not(IsComObjectCreated(hoJs))) Begin Send CreateComObject of hoJs End Get Create (RefClass(cComChilkatJsonObject)) To hoResult If (Not(IsComObjectCreated(hoResult))) Begin Send CreateComObject of hoResult End Set ComEmitCompact Of hoResult To False // Call Eval to add the function to the context's global object Get pvComObject of hoSbScript to vSbScript Get pvComObject of hoResult to vResult Get ComEval Of hoJs vSbScript vResult To iSuccess If (iSuccess = False) Begin // Examine the result for an exception. Get ComEmit Of hoResult To sTemp1 Showln sTemp1 // Also examine the LastErrorText. Get ComLastErrorText Of hoJs To sTemp1 Showln sTemp1 Procedure_Return End // ------------------------------------------------------------------------------ // Call the function calculateTotal(numbers) Get Create (RefClass(cComChilkatJsonObject)) To hoFuncCall If (Not(IsComObjectCreated(hoFuncCall))) Begin Send CreateComObject of hoFuncCall End Set ComEmitCompact Of hoFuncCall To False // Create JSON specifying the function name and arguments // In this case, there is only 1 argument, and it is an array. Get ComUpdateString Of hoFuncCall "name" "calculateTotal" To iSuccess // Create the arguments array. Get Create (RefClass(cComChilkatJsonArray)) To hoArgsArray If (Not(IsComObjectCreated(hoArgsArray))) Begin Send CreateComObject of hoArgsArray End // The 1st argument in the arguments array is itself an array. // Passing -1 indicates to append to the array. Get Create (RefClass(cComChilkatJsonArray)) To hoArg If (Not(IsComObjectCreated(hoArg))) Begin Send CreateComObject of hoArg End Get pvComObject of hoArg to vArg Get ComAddArrayAt2 Of hoArgsArray -1 vArg To iSuccess // Fill in the values for the 1st argument. Get ComAddNumberAt Of hoArg -1 "10.50" To iSuccess Get ComAddNumberAt Of hoArg -1 "20.00" To iSuccess Get ComAddNumberAt Of hoArg -1 "5.25" To iSuccess // Add the "args" array to the funcCall. Get pvComObject of hoArgsArray to vArgsArray Get ComAppendArrayCopy Of hoFuncCall "args" vArgsArray To iSuccess Get ComEmit Of hoFuncCall To sTemp1 Showln sTemp1 // The funcCall is as follows. Notice that the 1st (and only) argument is an array. // { // "name": "calculateTotal", // "args": [ // [ // 10.50, // 20.00, // 5.25 // ] // ] // } Get pvComObject of hoFuncCall to vFuncCall Get pvComObject of hoResult to vResult Get ComCallFunction Of hoJs vFuncCall vResult To iSuccess If (iSuccess = False) Begin // Examine the result for an exception. Get ComEmit Of hoResult To sTemp1 Showln sTemp1 // Also examine the LastErrorText. Get ComLastErrorText Of hoJs To sTemp1 Showln sTemp1 Procedure_Return End Get ComEmit Of hoResult To sTemp1 Showln sTemp1 // Result: // { // "type": "double", // "value": 35.75 // } // The function also emitted text to the console. Get Create (RefClass(cComChilkatStringBuilder)) To hoSbOut If (Not(IsComObjectCreated(hoSbOut))) Begin Send CreateComObject of hoSbOut End Get pvComObject of hoSbOut to vSbOut Send ComConsoleOutputSb To hoJs vSbOut Get ComGetAsString Of hoSbOut To sTemp1 Showln sTemp1 // Output: // 10.5,20,5.25 // 10.5 // 20 // 5.25 // ----------------------------------------------------------- // Note: If the array argument is simple, this is an alternative // and simpler way of creating the funcCall: Send ComClear To hoFuncCall Get ComUpdateString Of hoFuncCall "name" "calculateTotal" To iSuccess Get ComUpdateNumber Of hoFuncCall "args[0][0]" "10.50" To iSuccess Get ComUpdateNumber Of hoFuncCall "args[0][1]" "20.00" To iSuccess Get ComUpdateNumber Of hoFuncCall "args[0][2]" "5.25" To iSuccess Get ComEmit Of hoFuncCall To sTemp1 Showln sTemp1 End_Procedure
|
||||
© 2000-2026 Chilkat Software, Inc. All Rights Reserved.