Wyświetlasz dokumentację Apigee Edge.
Otwórz dokumentację Apigee X. info
ScriptExecutionFailed
Kod błędu
steps.javascript.ScriptExecutionFailed
Treść odpowiedzi na błąd
{ "fault": { "faultstring": "Execution of javascript_policy_name failed with error: error_type: error_description. (javascript_source_file_name)\"", "detail": { "errorcode": "steps.javascript.ScriptExecutionFailed" } } }
Rodzaje błędów i ich możliwe przyczyny
Zasada JavaScript może generować wiele różnych typów błędów ScriptExecutionFailed. Niektóre z najczęstszych błędów znajdziesz w tabeli poniżej:
Typ błędu | Przyczyna |
Błąd zakresu | Użycie liczby wykraczającej poza dopuszczalny zakres wartości wiąże się z błędem RangeError. |
Błąd pliku referencyjnego | Jeśli użyjesz (odwołujesz się do) zmiennej, która nie została zadeklarowana, zostanie zgłoszony błąd ReferenceError. |
Błąd składni | Jeśli spróbujesz przeanalizować kod z błędem składni, zostanie wywołany błąd SyntaxError. |
Błąd typu | Użycie operacji spoza zakresu oczekiwanych typów powoduje zgłoszenie błędu TypeError. |
Błąd identyfikatora URI | W przypadku użycia niedozwolonych znaków w funkcji identyfikatora URI zostanie zgłoszony błąd URIError. |
Błąd zakresu
Typ błędu RangeError
jest wywoływany, gdy operujesz na wartości lub przekazujesz wartość do funkcji, która nie należy do zbioru lub zakresu dozwolonych wartości.
Ten błąd może wystąpić np. w tych sytuacjach:
- Jeśli w przypadku niektórych interfejsów Date API użyjesz nieprawidłowej daty, np. 31 września 2018 r.
- Jeśli przekazujesz nieprawidłową wartość do metod liczbowych, takich jak
Number.toPrecision()
,Number.tofixed()
lubNumber.toExponential()
. Jeśli na przykład w metodzieNumber.toPrecision()
przekażesz dużą wartość, taką jak 400 lub 500, zobaczysz błąd zakresu. - Jeśli utworzysz tablicę o nieprawidłowej długości.
Treść odpowiedzi na błąd
{ "fault": { "faultstring": "Execution of javascript_policy_name failed with error: Javascript runtime error: \"RangeError: error_description. (javascript_source_file_name:line_number)\"", "detail": { "errorcode": "steps.javascript.ScriptExecutionFailed" } } }
Uwaga: diagnozowanie i rozwiązywanie błędów zakresu zależy od dokładnej treści komunikatu o błędzie zwracanego przez zasady JavaScriptu. Poniżej znajdziesz kilka przykładów.
Przykład 1. Nieprawidłowa data
Przykładowa treść odpowiedzi na błąd
{
"fault": {
"faultstring": "Execution of ParseDate failed with error: Javascript runtime error: \"RangeError: Date is invalid. (ParseDate.js:2)\"",
"detail": {
"errorcode": "steps.javascript.ScriptExecutionFailed"
}
}
}
Diagnostyka
Wskaż zasadę JavaScriptu, jej plik źródłowy, numer wiersza, w którym wystąpił błąd, oraz jego opis. Wszystkie te informacje znajdziesz w elemencie
faultstring
odpowiedzi na błąd. Na przykład w tymfaultstring
nazwa zasady JavaScript toParseDate
, plik źródłowy JavaScript toParseDate.js
, numer wiersza, w którym wystąpił błąd, to2
, a opis błędu toDate is invalid
:"faultstring": "Execution of ParseDate failed with error: Javascript runtime error: \"RangeError: Date is invalid. (ParseDate.js:2)\""
Sprawdź plik źródłowy JavaScript (zidentyfikowany w kroku 1 powyżej) i sprawdź, czy w numerze wiersza podanym w błędzie występuje nieprawidłowa data lub czy zmienna użyta w numerze wiersza ma nieprawidłową datę. Jeśli użyto nieprawidłowej daty, jest to przyczyna błędu.
Oto przykładowy plik źródłowy JavaScriptu, który powoduje ten błąd:
ParseDate.js
var date = new Date('2018-09-31T11:19:08.402Z'); date.toISOString();
W tym przykładzie w wierszu 2 jest używana zmienna
date
. Po sprawdzeniu pliku źródłowego możesz zauważyć, że zmiennadate
ma nieprawidłową datę:2018-09-31T11:19:08.402Z.
Ta data jest nieprawidłowa, ponieważ wrzesień nie ma 31 dni.Uwaga: format ISO-8601 użyty w tym przykładzie to:
YYYY-MM-DDTHH:mm:ss.sssZ
Rozdzielczość
Podczas korzystania z interfejsów Date API w kodzie JavaScriptu zawsze używaj prawidłowej daty.
Aby naprawić powyższy przykładowy kod JavaScript, możesz ustawić datę jako Sept 30 2018
, jak pokazano poniżej:
var date = new Date('2018-09-30T11:19:08.402Z');
date.toISOString();
Przykład 2. Nieprawidłowy numer przekazany do interfejsów Precision
Przykładowa treść odpowiedzi na błąd
{
"fault": {
"faultstring": "Execution of SetNumberPrecision failed with error: Javascript runtime error: "RangeError: Precision 400 out of range. (SetNumberPrecision.js:2)\"",
"detail": {
"errorcode": "steps.javascript.ScriptExecutionFailed"
}
}
}
Diagnostyka
Określ zasadę JavaScript, jej plik źródłowy, numer wiersza, w którym wystąpił błąd, oraz opis błędu. Wszystkie te informacje znajdziesz w elemencie
faultstring
odpowiedzi na błąd. Na przykład w kodziefaultstring
nazwa zasady JavaScript toSetNumberPrecision
, plik źródłowy JavaScript toSetNumberPrecision.js
, numer wiersza, w którym wystąpił błąd, to 2, a opis błędu toPrecision 400 out of range.
."faultstring": "Execution of SetNumberPrecision failed with error: Javascript runtime error: "RangeError: Precision 400 out of range. (SetNumberPrecision.js:2)\""
Sprawdź plik źródłowy JavaScript (podany w kroku 1 powyżej). Jeśli duży numer podany w opisie błędu jest używany w konkretnym numerze wiersza, jest to przyczyna błędu.
Oto przykładowy plik źródłowy JavaScript, który prowadzi do tego błędu:
SetNumberPrecision.js
var number = 12.3456; var rounded_number = number.toPrecision(400); print("rounded_number = " + rounded_number);
Zwróć uwagę, że w tym przykładzie w wierszu numer 2 została użyta duża wartość 400. Nie możesz ustawić dokładności na tak dużą liczbę cyfr, więc pojawia się ten komunikat o błędzie:
"faultstring": "Execution of SetNumberPrecision failed with error: Javascript runtime error: "RangeError: Precision 400 out of range. (SetNumberPrecision.js:2)\""
Rozdzielczość
Sprawdź, czy liczba użyta w metodzie toPrecision()
mieści się w zestawie dozwolonych wartości.
Aby rozwiązać problem z opisanym powyżej przykładem kodu JavaScript, ustaw liczbę istotnych cyfr na 2, która jest prawidłowa:
var number = 12.3456;
var rounded_number = number.toPrecision(2);
print("rounded_number = " + rounded_number);
Błąd referencyjny
Typ błędu ReferenceError
jest wywoływany, gdy w kodzie JavaScriptu jest używana (odwołuje się do niej) lub jest modyfikowana niezdefiniowana zmienna.
Treść odpowiedzi na błąd
{ "fault": { "faultstring": "Execution of javascript_policy_name failed with error: Javascript runtime error: \"ReferenceError: variable_name is not defined. (javascript_source_file_name:line_number)\"", "detail": { "errorcode": "steps.javascript.ScriptExecutionFailed" } } }
Przykładowa treść odpowiedzi na błąd
{
"fault": {
"faultstring": "Execution of ComputeTotalPrice failed with error: Javascript runtime error: \"ReferenceError: \"price\" is not defined. (ComputeTotalPrice.js:3)\"",
"detail": {
"errorcode": "steps.javascript.ScriptExecutionFailed"
}
}
}
Diagnostyka
Określ zasadę JavaScriptu, jej plik źródłowy i numer wiersza, w którym występuje odwołanie do niezdefiniowanej zmiennej. Wszystkie te informacje znajdziesz w elemencie
faultstring
odpowiedzi na błąd. Na przykład w kodziefaultstring
nazwa zasady JavaScript toComputeTotalPrice
, odpowiedni plik źródłowy toComputeTotalPrice.js
, numer wiersza, w którym wystąpił błąd, to3
, a nazwa niezdefiniowanej zmiennej toprice.
."faultstring": "Execution of ComputeTotalPrice failed with error: Javascript runtime error: \"ReferenceError: \"price\" is not defined. (ComputeTotalPrice.js:3)\""
Sprawdź numer wiersza w pliku źródłowym JavaScriptu i sprawdź, czy występuje w nim odwołanie do nieokreślonej zmiennej z kroku 1. Na przykład w 3. wierszu podany kod JavaScriptu odwołuje się do niezdefiniowanej zmiennej
price
, która jest zgodna z tym, co znajduje się w wierszu faultstring:ComputeTotalPrice.js
var item = context.getVariable("request.queryparam.item"); var quantity = context.getVariable("request.queryparam.quantity"); var totalprice = parseInt(quantity) * parseInt(price); context.setVariable("TotalPrice", totalprice);
Sprawdź, czy określona zmienna jest zdefiniowana w kodzie JavaScript. Jeśli zmienna nie jest zdefiniowana, to jest przyczyną błędu.
W pokazanym powyżej przykładowym kodzie użyto niezdeklarowanej/niezdefiniowanej zmiennej
price
, dlatego pojawi się taki komunikat o błędzie:"faultstring": "Execution of ComputeTotalPrice failed with error: Javascript runtime error: \"ReferenceError: \"price\" is not defined. (ComputeTotalPrice.js:3)\""
Rozdzielczość
Upewnij się, że wszystkie zmienne, do których odwołuje się kod JavaScript, są prawidłowo zdefiniowane.
Aby rozwiązać problem z przykładowym kodem JavaScript podanym powyżej, zdefiniuj zmienną cenę przed jej użyciem. Na przykład:
var item = context.getVariable("request.queryparam.item");
var quantity = context.getVariable("request.queryparam.quantity");
var price = context.getVariable("request.queryparam.price");
var totalprice = parseInt(quantity) * parseInt(price);
context.setVariable("TotalPrice", totalprice);
Błąd składni
Typ błędu SyntaxError
jest wywoływany, gdy mechanizm JavaScript napotyka tokeny lub kolejność tokenów, która nie jest zgodna ze składnią języka, albo gdy nieprawidłowy format danych wejściowych jest przekazywany do interfejsów parsera, takich jak parsowanie JSON/XML.
Jeśli na przykład nieprawidłowy lub źle sformatowany ładunek JSON jest przekazywany jako dane wejściowe do interfejsu API JSON.parse
używanego w zasadach dotyczących JavaScriptu, pojawia się ten błąd.
Treść odpowiedzi na błąd
{ "fault": { "faultstring": "Execution of javascript_policy_name failed with error: Javascript runtime error: \"SyntaxError: error_description. (javascript_source_file_name:line_number)\"", "detail": { "errorcode": "steps.javascript.ScriptExecutionFailed" } } }
Przykładowa treść odpowiedzi na błąd
{
"fault": {
"faultstring": "Execution of ParseJSONRequest failed with error: Javascript runtime error: \"SyntaxError: Unexpected token: <. (ParseJSONRequest.js:2)\"",
"detail": {
"errorcode": "steps.javascript.ScriptExecutionFailed"
}
}
}
Diagnostyka
Określ zasadę JavaScript, jej plik źródłowy, numer wiersza, w którym wystąpił błąd, oraz opis błędu. Wszystkie te informacje znajdziesz w elemencie
faultstring
odpowiedzi na błąd. Na przykład w tym przypadkufaultstring
nazwa zasady JavaScript toParseJSONRequest
, plik źródłowy JavaScript toParseJSONRequest.js
, numer wiersza, w którym wystąpił błąd, to2
, a opis błędu toUnexpected token
:"faultstring": "Execution of ParseJSONRequest failed with error: Javascript runtime error: \"SyntaxError: Unexpected token: <. (ParseJSONRequest.js:2)\""
W pliku źródłowym JavaScript (zidentyfikowanym w kroku 1 powyżej) sprawdź wiersz 2 i sprawdź, jaka operacja jest wykonywana. Jeśli wykonywana jest funkcja
JSON.parse()
, sprawdź przekazany jej parametr wejściowy. Jeśli parametr wejściowy jest nieprawidłowy lub ma nieprawidłowy format JSON, to jest przyczyną błędu.Oto przykładowy kod JavaScriptu, który powoduje ten błąd:
var input = context.getVariable("request.content"); var result = JSON.parse(input);
W tym przykładzie ładunek żądania (
request.content
) przekazany do interfejsu API Proxy jest używany jako dane wejściowe funkcjiJSON.parse()
.Oto przykładowe wywołanie interfejsu API, które pokazuje, jak żądanie zostało przekazane:
curl -v "http://<org>-<env>.apigee.net/v1/js-demo" -H "Content-Type: application/json" -X POST -d '<city>Bangalore</city>'
W powyższym żądaniu do serwera proxy interfejsu API przekazywany jest ten ładunek XML:
<city>Bangalore</city>
. Interfejs APIJSON.parse
oczekuje, że zostanie przekazany prawidłowy kod JSON, ale zamiast tego przekazano kod XML, więc wystąpił błąd:"Execution of ParseJSONRequest failed with error: Javascript runtime error: \"SyntaxError: Unexpected token: <. (ParseJSONRequest.js:2)\""
Rozdzielczość
Pamiętaj, aby przekazywać prawidłowe dane do interfejsów API służących do analizowania, które są używane w kodzie JavaScript.
Aby rozwiązać problem z opisanymi powyżej przykładowymi zasadami, prześlij prawidłowe żądanie z ładunkiem JSON w ten sposób:
curl -v "http://<org>-<env>.apigee.net/v1/js-demo" -H "Content-Type: application/json" -X POST -d '{"city" : "Bangalore"}'
Błąd typu
Typ błędu TypeError
jest zgłaszany, gdy:
- Operand lub argument przekazany do funkcji jest niezgodny z typem oczekiwanym przez ten operator lub funkcję.
- Funkcja jest wywoływana dla obiektu o wartości null, niezdefiniowanym lub niewłaściwym.
- Dostęp do właściwości jest uzyskiwany z obiektu null, nieokreślonego lub niewłaściwego.
Na przykład błąd typu:
- Jeśli spróbujesz wywołać funkcję
toUpperCase()
na numerze. Dzieje się tak, ponieważ funkcjatoUpperCase()
może być wywoływana tylko w przypadku obiektów typu string. - Gdy próbujesz odczytać właściwość z obiektu o wartości null lub niezdefiniowanego obiektu.
Treść odpowiedzi na błąd
{ "fault": { "faultstring": "Execution of javascript_policy_name failed with error: Javascript runtime error: \"TypeError: error_description. (javascript_source_file_name:line_number)\"", "detail": { "errorcode": "steps.javascript.ScriptExecutionFailed" } } }
Przykład 1. Wywołanie funkcji na niewłaściwym obiekcie
Jeśli spróbujesz wywołać funkcję na nieobsługiwanym obiekcie, pojawi się ten błąd.
Jeśli na przykład spróbujesz wywołać funkcję toUpperCase()
dla liczby, pojawi się błąd. Dzieje się tak, ponieważ funkcja toUpperCase()
może być wywoływana tylko na obiektach typu string.
Przykładowa treść odpowiedzi na błąd
{
"fault": {
"faultstring": "Execution of ConvertToUpperCase failed with error: Javascript runtime error: \"TypeError: Cannot find function toUpperCase in object 100. (ConvertToUpperCase.js:2)\"",
"detail": {
"errorcode": "steps.javascript.ScriptExecutionFailed"
}
}
}
Diagnostyka
Określ zasadę JavaScript, jej plik źródłowy, numer wiersza, w którym wystąpił błąd, oraz opis błędu. Wszystkie te informacje znajdziesz w elemencie
faultstring
odpowiedzi na błąd. Na przykład w tymfaultstring
nazwa zasady JavaScript toConvertToUpperCase
, plik źródłowy toConvertToUpperCase.js
, numer wiersza to2
, a opis błędu to **Cannot find function toUpperCase in object 100.
."faultstring": "Execution of ConvertToUpperCase failed with error: Javascript runtime error: \"TypeError: Cannot find function toUpperCase in object 100. (ConvertToUpperCase.js:2)\""
Opis błędu wskazuje, że wywołujesz funkcję
toUpperCase()
na obiekcie, którego wartość liczbowa wynosi 100.Sprawdź plik źródłowy JavaScript i sprawdź, czy w wierszu 2 (zidentyfikowanym w kroku 1 powyżej) wywołujesz funkcję
toUpperCase()
na obiekcie, którego wartość liczbowa wynosi 100. Jeśli tak, to jest przyczyna błędu.Oto przykładowy plik źródłowy JavaScriptu, który powoduje ten błąd:
ConvertToUpperCase.js
var number = 100; var result = number.toUpperCase();
W powyższym kodzie JavaScript zmienna
number
jest ustawiona na wartość 100. FunkcjatoUpperCase()(
jest następnie wywoływana dla obiektu number. Ponieważ funkcjętoUpperCase()
można wywołać tylko dla obiektów typu ciąg znaków, pojawia się błąd:"Execution of ConvertToUpperCase failed with error: Javascript runtime error: \"TypeError: Cannot find function toUpperCase in object 100. (ConvertToUpperCase.js:2)\""
Rozdzielczość
Zawsze używaj funkcji takich jak toUpperCase()
na prawidłowych obiektach.
Aby poprawić ten przykład, możesz utworzyć zmienną ciągu znaków, a potem wywołać funkcję toUpperCase()
na ciągu znaków:
var text = "Hello Apigee !";
var result = text.toUpperCase();
Przykład 2. Nie można odczytać właściwości z niezdefiniowanego obiektu
Jeśli spróbujesz uzyskać dostęp do właściwości z niezdefiniowanego obiektu lub odczytać taką właściwość, pojawi się ten błąd. Ten błąd może wystąpić np. podczas próby uzyskania dostępu do danych z obiektu w tablicy, który nie jest zdefiniowany. Poniżej znajdziesz szczegółowe wyjaśnienie.
Przykładowa treść odpowiedzi na błąd
{
"fault": {
"faultstring": "Execution of ParseJSONResponse failed with error: Javascript runtime error: \"TypeError: Cannot read property \"length\" from undefined. (ParseJSONResponse.js:7)\"",
"detail": {
"errorcode": "steps.javascript.ScriptExecutionFailed"
}
}
}
Diagnostyka
Określ zasadę JavaScript, jej plik źródłowy, numer wiersza, w którym wystąpił błąd, oraz opis błędu. Wszystkie te informacje znajdziesz w elemencie
faultstring
odpowiedzi na błąd. Na przykład w przypadkufaultstring
nazwa zasady toParseJSONResponse
, plik źródłowy toParseJSONResponse.js
, numer wiersza to6
, a opis błędu toCannot read property "length" from undefined
."faultstring": "Execution of ParseJSONResponse failed with error: Javascript runtime error: \"TypeError: Cannot read property \"length\" from undefined. (ParseJSONResponse.js:6)\""
Ten błąd wskazuje, że właściwości length nie można odczytać z niezdefiniowanego obiektu.
Sprawdź numer wiersza w pliku źródłowym JavaScriptu (zidentyfikowany w kroku 1 powyżej) i sprawdź, czy obiekt ma prawidłową wartość, czy jest niezdefiniowany. Aby ustalić, jak dany obiekt został zdefiniowany lub wyprowadzony, oraz dlaczego jest on nieokreślony, być może trzeba przeczytać i zrozumieć cały plik źródłowy. Jeśli okaże się, że dany obiekt jest rzeczywiście nie zdefiniowany, a Ty próbujesz uzyskać do niego dostęp, aby odczytać długość właściwości, to właśnie jest przyczyną błędu.
Przyjrzyjmy się przykładowi, aby lepiej zrozumieć ten problem:
Załóżmy, że serwer backendowy zwraca następującą odpowiedź JSON:
{ "cars": [ { "name":"Toyota", "count": 150 } { "name":"Honda", "count": 100 }, { "name":"Ford", "count": 75 } ] }
Oto przykładowy plik źródłowy JavaScript, który analizuje odpowiedź JSON i prowadzi do powyższego błędu:
ParseJSONResponse.js
// Get the JSON response var jsonData = context.getVariable("response.content"); print (jsonData); // Read the cars array for (var i = 0; i < jsonData.cars.length; i++) { print("name = " + jsonData.cars[i].name); print("count = " + jsonData.cars[i].count); }
Po uważnym przyjrzeniu się kodowi JavaScript możesz zauważyć, że w wierszu 2 element
response.content
jest odczytywany/zapisywany w zmiennejjsonData
jako zwykły ciąg znaków (w cudzysłowie).Ponieważ
jsonData
jest zwykłym ciągiem znaków, próba uzyskania dostępu docars
z poziomujsonData
(jsonData.cars
) będzie niezdefiniowana.Gdy następnie spróbujesz odczytać z elementu
jsonData.cars
nieokreśloną właściwośćlength
, pojawi się błąd:"faultstring": "Execution of ParseJSONResponse failed with error: Javascript runtime error: \"TypeError: Cannot read property \"length\" from undefined. (ParseJSONResponse.js:6)\""
Rozdzielczość
Pamiętaj, aby zawsze odczytywać dane JSON jako obiekt JSON za pomocą odpowiednich interfejsów API JSON.
Aby naprawić opisany powyżej przykład kodu JavaScript, możesz użyć funkcji JSON.parse()
na obiekcie response.content
, aby uzyskać go jako obiekt JSON. Po wykonaniu tych czynności możesz uzyskać dostęp do tablicy cars
i ją iterować.
// Get the JSON response
var data = context.getVariable("response.content");
var jsonData = JSON.parse(data);
print (jsonData);
// Read the cars array
for (var i = 0; i < jsonData.cars.length; i++)
{
print("name = " + jsonData.cars[i].name);
print("count = " + jsonData.cars[i].count);
}
Błąd URI
Jeśli w funkcji URI użyjesz niedozwolonych znaków, wystąpi błąd typu URIError
.
Jeśli np. funkcja decodeURI
lub decodeURIComponent
otrzyma identyfikator URI zawierający symbol procenta, pojawi się ten błąd.
Treść odpowiedzi na błąd
{ "fault": { "faultstring": "Execution of javascript_policy_name failed with error: Javascript runtime error: \"URIError: error_description. (javascript_source_file_name:line_number)\"", "detail": { "errorcode": "steps.javascript.ScriptExecutionFailed" } } }
Przykładowa treść odpowiedzi na błąd
{
"fault": {
"faultstring": "Execution of URIDecode failed with error: Javascript runtime error: \"URIError: Malformed URI sequence. (URIDecode.js:2)\"",
"detail": {
"errorcode": "steps.javascript.ScriptExecutionFailed"
}
}
}
Diagnostyka
Określ zasadę JavaScript, jej plik źródłowy, numer wiersza, w którym wystąpił błąd, oraz opis błędu. Wszystkie te informacje znajdziesz w elemencie faultstring odpowiedzi na błąd. Na przykład w tym ciągu znaków nazwa zasady JavaScript to
URIDecode</code
, plik źródłowy JavaScript ma nazwęURIDecode.js
, numer wiersza to2
, a opis błędu toMalformed URI sequence
:"faultstring": "Execution of URIDecode failed with error: Javascript runtime error: \"URIError: Malformed URI sequence. (URIDecode.js:2)\""
Opis błędu wskazuje, że w wierszu 2 pliku
URIDecode.js
używana jest nieprawidłowa sekwencja URI.Sprawdź plik źródłowy JavaScriptu i sprawdź, czy argument przekazany do dowolnej funkcji URI zawiera niedozwolone znaki. Jeśli tak, to jest przyczyna błędu.
Oto przykład pliku źródłowego JavaScriptu, który powoduje ten błąd:
URIDecode.js
var str = "75%-Completed"; var decoded_str = decodeURIComponent(str); context.setVariable("decoded_str", decoded_str);
W przykładowym kodzie JavaScriptu pokazanym powyżej zmienna
str
przekazana dodecodeURIComponent()
zawiera znak procentu, który jest uważany za nieprawidłowy znak. W związku z tym pojawia się błąd:"Execution of URIDecode failed with error: Javascript runtime error: \"URIError: Malformed URI sequence. (URIDecode.js:2)\""
Rozdzielczość
Upewnij się, że wszystkie znaki użyte w funkcjach URI są dozwolone i prawidłowe.
Aby rozwiązać problem z opisanym powyżej przykładem kodu JavaScript, użyj zakodowanego symbolu procentu. Przykład: %25
:
var str = "75%25-Completed";
var decoded_str = decodeURIComponent(str);
context.setVariable("decoded_str", decoded_str);