![]() |
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 Object ArgumentSee more JavaScript ExamplesDemonstrates how to call a JavaScript function with an argument that is an object.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 vArg Handle hoArg Variant vArgsArray Handle hoArgsArray Variant vSbOut Handle hoSbOut String sTemp1 Move False To iSuccess // This is the JavaScript function we'll call: // function describeCar(car) { // console.log(`This is a ${car.year} ${car.make} ${car.model}.`); // } Get Create (RefClass(cComChilkatStringBuilder)) To hoSbScript If (Not(IsComObjectCreated(hoSbScript))) Begin Send CreateComObject of hoSbScript End Get ComAppend Of hoSbScript "function describeCar(car) { console.log(`This is a ${car.year} ${car.make} ${car.model}.`); }" To iSuccess 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 describeCar(car) 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 object. // { // "name": "describeCar", // "args": [ // { // "make": "Toyota", // "model": "Corolla", // "year": 2022 // } // ] // } Get ComUpdateString Of hoFuncCall "name" "describeCar" To iSuccess // Create the JSON object that is the argument. Get Create (RefClass(cComChilkatJsonObject)) To hoArg If (Not(IsComObjectCreated(hoArg))) Begin Send CreateComObject of hoArg End Get ComUpdateString Of hoArg "make" "Toyota" To iSuccess Get ComUpdateString Of hoArg "model" "Corolla" To iSuccess Get ComUpdateInt Of hoArg "year" 2022 To iSuccess // Create the arguments array. Get Create (RefClass(cComChilkatJsonArray)) To hoArgsArray If (Not(IsComObjectCreated(hoArgsArray))) Begin Send CreateComObject of hoArgsArray End Get pvComObject of hoArg to vArg Get ComAddObjectCopyAt Of hoArgsArray 0 vArg 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 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 // The describeCar JavaScript function returns nothing. // Therefore, the result is "undefined". // { // "type": "undefined", // "value": "undefined" // } // However, the function 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: // This is a 2022 Toyota Corolla. // ----------------------------------------------------------- // Note: If the object argument is simple, this is an alternative // and simpler way of creating the funcCall: Send ComClear To hoFuncCall Get ComUpdateString Of hoFuncCall "name" "describeCar" To iSuccess Get ComUpdateString Of hoFuncCall "args[0].make" "Toyota" To iSuccess Get ComUpdateString Of hoFuncCall "args[0].model" "Corolla" To iSuccess Get ComUpdateInt Of hoFuncCall "args[0].year" 2022 To iSuccess Get ComEmit Of hoFuncCall To sTemp1 Showln sTemp1 End_Procedure |
||||
© 2000-2026 Chilkat Software, Inc. All Rights Reserved.