Sample code for 30+ languages & platforms
Visual FoxPro Requires Chilkat v11.4.0+

Call a JavaScript Function Returning an Object

See more JavaScript Examples

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

Chilkat Visual FoxPro Downloads

Visual FoxPro
LOCAL lnSuccess
LOCAL loSbScript
LOCAL loJs
LOCAL loResult
LOCAL loFuncCall

lnSuccess = 0

*  This is the JavaScript function we'll call:

*  function getSettings() {
*      return {
*          theme: "dark",
*          notifications: true,
*          version: 1.0
*      };
*  }

loSbScript = CreateObject('Chilkat.StringBuilder')
loSbScript.Append("function getSettings() {")
loSbScript.Append("    return {")
loSbScript.Append('        theme: "dark",')
loSbScript.Append("        notifications: true,")
loSbScript.Append("        version: 1.0")
loSbScript.Append("    };")
loSbScript.Append("}")

loJs = CreateObject('Chilkat.Js')

loResult = CreateObject('Chilkat.JsonObject')
loResult.EmitCompact = 0

*  Call Eval to add the function to the context's global object
lnSuccess = loJs.Eval(loSbScript,loResult)
IF (lnSuccess = 0) THEN
    *  Examine the result for an exception.
    ? loResult.Emit()

    *  Also examine the LastErrorText.
    ? loJs.LastErrorText
    RELEASE loSbScript
    RELEASE loJs
    RELEASE loResult
    CANCEL
ENDIF

*  ------------------------------------------------------------------------------
*  Call the function getSettings()

loFuncCall = CreateObject('Chilkat.JsonObject')

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

*  {
*    "name": "getSettings",
*  }

loFuncCall.UpdateString("name","getSettings")

lnSuccess = loJs.CallFunction(loFuncCall,loResult)
IF (lnSuccess = 0) THEN
    *  Examine the result for an exception.
    ? loResult.Emit()

    *  Also examine the LastErrorText.
    ? loJs.LastErrorText
    RELEASE loSbScript
    RELEASE loJs
    RELEASE loResult
    RELEASE loFuncCall
    CANCEL
ENDIF

? loResult.Emit()

*  Output:
*  {
*    "type": "object",
*    "value": {
*      "theme": "dark",
*      "notifications": true,
*      "version": 1
*    }
*  }

*  Examine the object's members
? "theme: " + loResult.StringOf("value.theme")
? "notifications: " + STR(loResult.BoolOf("value.notifications"))
? "version: " + STR(loResult.IntOf("value.version"))

*  Output:
*  theme: dark
*  notifications: True
*  version: 1

RELEASE loSbScript
RELEASE loJs
RELEASE loResult
RELEASE loFuncCall