Przeglądasz dokumentację Apigee Edge.
Otwórz dokumentację Apigee X. Informacje
ScriptExecutionFailed
Kod błędu
steps.javascript.ScriptExecutionFailed
Treść odpowiedzi o błędzie
{ "fault": { "faultstring": "Execution of javascript_policy_name failed with error: error_type: error_description. (javascript_source_file_name)\"", "detail": { "errorcode": "steps.javascript.ScriptExecutionFailed" } } }
Typy błędów i ich możliwe przyczyny
Zasada JavaScript może generować wiele różnych typów błędów ScriptExecutionFailed. Oto niektóre z najczęstszych błędów:
Rodzaj błędu | Przyczyna |
Błąd zakresu | W przypadku użycia liczby, która wykracza poza dopuszczalny zakres wartości, zgłaszany jest błąd RangeError. |
Błąd pliku referencyjnego | Jeśli użyjesz (odwołania) zmiennej, która nie została zadeklarowana, zgłaszany jest błąd ReferenceError. |
Błąd składni | Próba sprawdzenia kodu z błędem składniowym powoduje zgłoszenie błędu SyntaxError. |
Błąd typu | W przypadku użycia operacji spoza zakresu oczekiwanych typów zgłaszany jest błąd TypeError. |
Błąd identyfikatora URI | W przypadku użycia niedozwolonych znaków w funkcji URI wysyłany jest URIError. |
Błąd zakresu
Typ błędu RangeError
jest zgłaszany, gdy wykonujesz działanie na wartości lub przekazujesz wartość do funkcji, która nie znajduje się w zbiorze lub zakresie dozwolonych wartości.
Ten błąd jest zgłaszany na przykład w tych sytuacjach:
- Jeśli w niektórych interfejsach API Date używasz nieprawidłowej daty, takiej jak 31 września 2018 r.,
- Jeśli przekazujesz nieprawidłową wartość przy użyciu metod liczbowych takich jak
Number.toPrecision()
,Number.tofixed()
czyNumber.toExponential()
. Załóżmy, że w metodzieNumber.toPrecision()
prześlesz dużą wartość, taką jak 400 lub 500, zobaczysz błąd zakresu. - Gdy utworzysz tablicę o niedozwolonej długości.
Treść odpowiedzi o błędzie
{ "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: diagnoza i rozwiązywanie błędów dotyczących zakresu zależą od dokładnego komunikatu o błędzie zgłoszonego przez zasadę JavaScript. Poniżej przedstawiamy 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ę 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 o błędzie. Na przykład w tym plikufaultstring
nazwa zasady JavaScriptu 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 (określony w kroku 1 powyżej) i sprawdź, czy w wierszu podanym w błędzie użyto nieprawidłowej daty lub czy zmienna użyta w tym wierszu ma nieprawidłową datę. Jeśli użyto nieprawidłowej daty, to jest przyczyną błędu.
Oto przykładowy plik źródłowy JavaScript, 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 znajduje się zmienna
date
. Przeglądając plik źródłowy, możesz zobaczyć, ż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ść
Upewnij się, że podczas korzystania z interfejsów API daty w kodzie JavaScript używana jest prawidłowa data.
Aby poprawić przykładowy kod JavaScript pokazany powyżej, możesz ustawić datę Sept 30 2018
tak, jak to pokazano poniżej:
var date = new Date('2018-09-30T11:19:08.402Z');
date.toISOString();
Przykład 2: nieprawidłowa liczba przekazana do interfejsów Precision API
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
Wskaż 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 o błędzie. Na przykład w tym plikufaultstring
nazwa zasady JavaScriptu 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 (określony w kroku 1 powyżej). Jeśli w danym wierszu znajduje się duża liczba podana w opisie błędu, to właśnie jest przyczyną błędu.
Oto przykładowy plik źródłowy JavaScript, który powoduje ten błąd:
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 nr 2 została użyta duża wartość 400. Ponieważ nie możesz ustawić dokładności tak dużej liczby cyfr, pojawi się ten błąd:
"faultstring": "Execution of SetNumberPrecision failed with error: Javascript runtime error: "RangeError: Precision 400 out of range. (SetNumberPrecision.js:2)\""
Rozdzielczość
Upewnij się, że liczba używana w metodzie toPrecision()
mieści się w zbiorze dozwolonych wartości.
Aby rozwiązać problem z przykładowym kodem JavaScript opisanym powyżej, ustaw prawidłową liczbę cyfr znaczących na 2:
var number = 12.3456;
var rounded_number = number.toPrecision(2);
print("rounded_number = " + rounded_number);
Błąd referencyjny
Typ błędu ReferenceError
jest zgłaszany w przypadku użycia lub obsługi niezdefiniowanej zmiennej w kodzie JavaScript (odwołanie).
Treść odpowiedzi o błędzie
{ "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
Wskaż zasadę JavaScript, jej plik źródłowy i numer wiersza, w którym odwołuje się do niezdefiniowanej zmiennej. Wszystkie te informacje znajdziesz w elemencie
faultstring
odpowiedzi o błędzie. Na przykład w plikufaultstring
nazwa zasady JavaScriptu toComputeTotalPrice
, odpowiedni plik źródłowy toComputeTotalPrice.js
, numer wiersza, w którym wystąpił błąd, to3
, a niezdefiniowana nazwa 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 JavaScript i sprawdź, czy odwołuje się do niezdefiniowanej zmiennej określonej w kroku 1 powyżej. Na przykład ten kod JavaScript odwołuje się do niezdefiniowanej zmiennej
price
w wierszu 3, która jest zgodna z treścią w ciągu błędu: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 konkretna zmienna jest zdefiniowana w kodzie JavaScript. Jeśli zmienna nie jest zdefiniowana, to jest przyczyną błędu.
W przykładowym skrypcie pokazanym powyżej używana jest niezadeklarowana/zdefiniowana zmienna
price
, dlatego zobaczysz taki błąd:"faultstring": "Execution of ComputeTotalPrice failed with error: Javascript runtime error: \"ReferenceError: \"price\" is not defined. (ComputeTotalPrice.js:3)\""
Rozdzielczość
Sprawdź, czy wszystkie zmienne, do których odwołuje się kod JavaScript, są prawidłowo zdefiniowane.
Aby rozwiązać problem z przykładowym kodem JavaScript pokazanym powyżej, zdefiniuj cenę zmienną 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 zgłaszany, gdy mechanizm JavaScript napotka tokeny lub kolejność tokenów niezgodną ze składnią języka albo gdy do interfejsów API parsera zostanie przekazane nieprawidłowe dane formatu, takie jak analiza JSON/XML.
Ten błąd wystąpi na przykład, jeśli nieprawidłowy lub nieprawidłowo sformatowany ładunek JSON zostanie przekazany jako dane wejściowe do interfejsu API JSON.parse
używanego w zasadzie JavaScriptu.
Treść odpowiedzi o błędzie
{ "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
Wskaż 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 o błędzie. Na przykład w tym plikufaultstring
nazwa zasady JavaScriptu 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)\""
Sprawdź wiersz 2 w pliku źródłowym JavaScript (określony w kroku 1 powyżej) i sprawdź, jaka operacja jest wykonywana. Jeśli funkcja
JSON.parse()
jest wykonywana, sprawdź przekazany do niej parametr wejściowy. Jeśli parametr wejściowy jest nieprawidłowy lub ma nieprawidłowy format JSON, to właśnie jest przyczyną błędu.Oto przykładowy kod JavaScript, 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 serwera proxy interfejsu API jest używany jako dane wejściowe do funkcjiJSON.parse()
.Oto przykładowe wywołanie interfejsu API, które pokazuje sposób przekazania żądania:
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
<city>Bangalore</city>
jest przekazywany poniższy ładunek XML. InterfejsJSON.parse
API oczekuje, że zostanie przekazany prawidłowy plik JSON, ale ponieważ zamiast niego przekazywany zostanie ładunek XML, wystąpi ten błąd:"Execution of ParseJSONRequest failed with error: Javascript runtime error: \"SyntaxError: Unexpected token: <. (ParseJSONRequest.js:2)\""
Rozdzielczość
Pamiętaj, by przekazywać do interfejsów API analizy składniowej prawidłowe dane wejściowe w kodzie JavaScript.
Aby rozwiązać problem z przykładową zasadą omówioną powyżej, przekaż prawidłowe żądanie ładunku JSON w następujący 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:
- Argument lub argument przekazany do funkcji są niezgodne z typem, którego oczekuje się od tego operatora lub funkcji.
- Funkcja jest wywoływana na null, niezdefiniowanym lub nieprawidłowym obiekcie.
- Dostęp do właściwości uzyskuje się z wartości null, niezdefiniowanego lub niewłaściwego obiektu.
Może np. zgłosić błąd typu:
- Próbujesz wywołać funkcję
toUpperCase()
dla liczby. Dzieje się tak, ponieważ funkcjętoUpperCase()
można wywoływać tylko w przypadku obiektów ciągu znaków. - Próbujesz odczytać właściwość z null lub niezdefiniowanego obiektu.
Treść odpowiedzi o błędzie
{ "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ływanie funkcji w 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 numeru, wystąpi błąd. Wynika to z tego, że funkcję toUpperCase()
można wywoływać tylko w przypadku obiektów ciągów znaków.
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
Wskaż 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 o błędzie. Na przykład w plikufaultstring
nazwa zasady JavaScriptu 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()
w obiekcie, którego wartość liczbowa to 100.Sprawdź plik źródłowy JavaScript i sprawdź, czy wywołujesz funkcję
toUpperCase()
w obiekcie, którego wartość liczbowa to 100 w wierszu numer 2 (określonym w kroku 1 powyżej). Jeśli tak, to jest przyczyna błędu.Oto przykładowy plik źródłowy JavaScript, który powoduje ten błąd:
ConvertToUpperCase.js
var number = 100; var result = number.toUpperCase();
W powyższym kodzie JavaScript zmienna
number
ma wartość 100. Następnie w obiekcie numeru jest wywoływana funkcjatoUpperCase()(
. FunkcjętoUpperCase()
można wywołać tylko w przypadku obiektów tekstowych, więc 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()
w prawidłowych obiektach.
Aby poprawić przykład pokazany powyżej, możesz utworzyć zmienną typu ciąg znaków, a następnie wywołać funkcję toUpperCase()
w 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 lub odczytać ją z niezdefiniowanego obiektu, pojawi się ten błąd. Ten błąd może wystąpić na przykład wtedy, gdy próbujesz uzyskać dostęp do danych z obiektu w tablicy, ale obiekt jest niezdefiniowany. 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
Wskaż 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 o błędzie. Na przykład w parametrzefaultstring
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)\""
Błąd wskazuje, że nie można odczytać właściwości length z niezdefiniowanego obiektu.
Sprawdź numer wiersza w pliku źródłowym JavaScript (określony w kroku 1 powyżej) i upewnij się, że obiekt ma prawidłową wartość lub jest niezdefiniowany. Aby ustalić, jak zdefiniowany lub uzyskany obiekt został zdefiniowany i dlaczego okaże się, że obiekt jest niezdefiniowany, konieczne może być zapoznanie się z pełnym plikiem źródłowym. Jeśli okaże się, że określony obiekt jest rzeczywiście niezdefiniowany i próbujesz uzyskać z niego dane o długości właściwości, to jest przyczyną błędu.
Przeanalizujmy przykład, aby lepiej zrozumieć, na czym polega ten problem:
Załóżmy, że z serwera backendu otrzymujesz tę 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 tę odpowiedź JSON i prowadzi do błędu opisanego powyżej:
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 dokładnym przeanalizowaniu kodu JavaScriptu można zauważyć, że w wierszu nr 2 wartość
response.content
jest odczytana/zapisana w zmiennejjsonData
jako zwykły ciąg znaków (w cudzysłowach).Ponieważ
jsonData
jest zwykłym ciągiem znaków, próba uzyskania dostępu docars
z poziomujsonData
(jsonData.cars
) będzie nieokreślona.Następnie, przy próbie odczytania właściwości
length
zjsonData.cars
, która jest niezdefiniowana, pojawia się błąd:"faultstring": "Execution of ParseJSONResponse failed with error: Javascript runtime error: \"TypeError: Cannot read property \"length\" from undefined. (ParseJSONResponse.js:6)\""
Rozdzielczość
Zadbaj o to, aby zawsze odczytywać dane JSON jako obiekt JSON przy użyciu odpowiednich interfejsów API JSON.
Aby naprawić opisany powyżej przykładowy kod JavaScript, możesz użyć funkcji JSON.parse()
w obiekcie response.content
, aby pobrać go jako obiekt JSON. Po tym czasie możesz uzyskać dostęp do tablicy cars
i wykonać jej iterację.
// 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 identyfikatora URI
W przypadku użycia niedozwolonych znaków w funkcji identyfikatora URI zgłaszany jest typ błędu URIError
.
Ten błąd wystąpi na przykład, jeśli przekażesz identyfikator URI z symbolem procentu do funkcji decodeURI
lub decodeURIComponent
.
Treść odpowiedzi o błędzie
{ "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
Wskaż 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 błędu. Na przykład w tym ciągu znaków nazwa zasady JavaScriptu to
URIDecode</code
, plik źródłowy JavaScript toURIDecode.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 w tabeli
URIDecode.js
używana jest nieprawidłowa sekwencja identyfikatora URI.Sprawdź plik źródłowy JavaScript i sprawdź, czy argument przekazany do którejkolwiek z funkcji URI zawiera niedozwolone znaki. Jeśli tak, to jest przyczyna błędu.
Oto przykładowy plik źródłowy JavaScript, 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 JavaScript pokazanym powyżej zmienna
str
przekazana dodecodeURIComponent()
zawiera symbol procentu, który jest uważany za niedozwolony 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żywane w funkcjach URI są legalne i dozwolone.
Aby rozwiązać problem z przykładowym kodem JavaScript opisanym powyżej, zakoduj symbol procentu. Na przykład %25
:
var str = "75%25-Completed";
var decoded_str = decodeURIComponent(str);
context.setVariable("decoded_str", decoded_str);