Visual FoxPro
Visual FoxPro
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
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