Tcl
Tcl
Call a JavaScript Function Returning an Object
See more JavaScript Examples
Demonstrates how to call a JavaScript function that returns an object.Chilkat Tcl Downloads
load ./chilkat.dll
set success 0
# This is the JavaScript function we'll call:
# function getSettings() {
# return {
# theme: "dark",
# notifications: true,
# version: 1.0
# };
# }
set sbScript [new_CkStringBuilder]
CkStringBuilder_Append $sbScript "function getSettings() {"
CkStringBuilder_Append $sbScript " return {"
CkStringBuilder_Append $sbScript " theme: \"dark\","
CkStringBuilder_Append $sbScript " notifications: true,"
CkStringBuilder_Append $sbScript " version: 1.0"
CkStringBuilder_Append $sbScript " };"
CkStringBuilder_Append $sbScript "}"
set js [new_CkJs]
set result [new_CkJsonObject]
CkJsonObject_put_EmitCompact $result 0
# Call Eval to add the function to the context's global object
set success [CkJs_Eval $js $sbScript $result]
if {$success == 0} then {
# Examine the result for an exception.
puts [CkJsonObject_emit $result]
# Also examine the LastErrorText.
puts [CkJs_lastErrorText $js]
delete_CkStringBuilder $sbScript
delete_CkJs $js
delete_CkJsonObject $result
exit
}
# ------------------------------------------------------------------------------
# Call the function getSettings()
set funcCall [new_CkJsonObject]
# Create JSON specifying the function name and arguments
# The function has no arguments, so we only specify the name.
# {
# "name": "getSettings",
# }
CkJsonObject_UpdateString $funcCall "name" "getSettings"
set success [CkJs_CallFunction $js $funcCall $result]
if {$success == 0} then {
# Examine the result for an exception.
puts [CkJsonObject_emit $result]
# Also examine the LastErrorText.
puts [CkJs_lastErrorText $js]
delete_CkStringBuilder $sbScript
delete_CkJs $js
delete_CkJsonObject $result
delete_CkJsonObject $funcCall
exit
}
puts [CkJsonObject_emit $result]
# Output:
# {
# "type": "object",
# "value": {
# "theme": "dark",
# "notifications": true,
# "version": 1
# }
# }
# Examine the object's members
puts "theme: [CkJsonObject_stringOf $result value.theme]"
puts "notifications: [CkJsonObject_BoolOf $result value.notifications]"
puts "version: [CkJsonObject_IntOf $result value.version]"
# Output:
# theme: dark
# notifications: True
# version: 1
delete_CkStringBuilder $sbScript
delete_CkJs $js
delete_CkJsonObject $result
delete_CkJsonObject $funcCall