Perl
Perl
Call a JavaScript Function Returning an Array
See more JavaScript Examples
Demonstrates how to call a JavaScript function that returns an array.Chilkat Perl Downloads
use chilkat();
$success = 0;
# ----------------------------------------------------------------------------------
# The Javascript functions called in this example are shown at the bottom of this page.
# -----------------------------------------------------------------------------------
$sbScript = chilkat::CkStringBuilder->new();
$success = $sbScript->LoadFile("js_function_returning_array.js","utf-8");
if ($success == 0) {
print $sbScript->lastErrorText() . "\r\n";
exit;
}
$js = chilkat::CkJs->new();
$result = chilkat::CkJsonObject->new();
$result->put_EmitCompact(0);
# Call Eval to add the function to the context's global object
$success = $js->Eval($sbScript,$result);
if ($success == 0) {
# Examine the result for an exception.
print $result->emit() . "\r\n";
# Also examine the LastErrorText.
print $js->lastErrorText() . "\r\n";
exit;
}
# ------------------------------------------------------------------------------
# Call each function
$funcCall = chilkat::CkJsonObject->new();
# Create JSON specifying the function name and arguments
# The function has no arguments, so we only specify the name.
$funcCall->UpdateString("name","getDays");
$success = $js->CallFunction($funcCall,$result);
if ($success == 0) {
# Examine the result for an exception.
print $result->emit() . "\r\n";
# Also examine the LastErrorText.
print $js->lastErrorText() . "\r\n";
exit;
}
print $result->emit() . "\r\n";
# Output:
# {
# "type": "array",
# "value": [
# "Monday",
# "Tuesday",
# "Wednesday",
# "Thursday",
# "Friday"
# ]
# }
# Access each array value..
$count = $result->SizeOfArray("value");
$i = 0;
while ($i < $count) {
$result->put_I($i);
print $result->stringOf("value[i]") . "\r\n";
$i = $i + 1;
}
# ------------------------------------------------------------------------------
# Call the getRange(start,end) function
$funcCall->Clear();
$funcCall->UpdateString("name","getRange");
$funcCall->UpdateInt("args[0]",14);
$funcCall->UpdateInt("args[1]",21);
$success = $js->CallFunction($funcCall,$result);
print $result->emit() . "\r\n";
# Output:
# {
# "type": "array",
# "value": [
# 14,
# 15,
# 16,
# 17,
# 18,
# 19,
# 20,
# 21
# ]
# }
$count = $result->SizeOfArray("value");
$i = 0;
while ($i < $count) {
$result->put_I($i);
print $result->IntOf("value[i]") . "\r\n";
$i = $i + 1;
}
# ------------------------------------------------------------------------------
# Call the getEmployees() function
$funcCall->Clear();
$funcCall->UpdateString("name","getEmployees");
$success = $js->CallFunction($funcCall,$result);
print $result->emit() . "\r\n";
# Output:
# {
# "type": "array",
# "value": [
# {
# "id": 101,
# "name": "Alice",
# "role": "Dev"
# },
# {
# "id": 102,
# "name": "Bob",
# "role": "Manager"
# }
# ]
# }
$count = $result->SizeOfArray("value");
$i = 0;
while ($i < $count) {
$result->put_I($i);
print "name: " . $result->stringOf("value[i].name") . "\r\n";
print "role: " . $result->stringOf("value[i].role") . "\r\n";
print "id: " . $result->IntOf("value[i].id") . "\r\n";
print "" . "\r\n";
$i = $i + 1;
}