Wyświetlasz dokumentację Apigee Edge.
Przejdź do
Dokumentacja Apigee X. informacje.
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
Zasady JavaScript mogą wywoływać wiele różnych typów błędów ScriptExecutionFailed. Najczęściej występujące błędy podajemy w tabeli:
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 | Przy próbie oceny kodu z błędem składniowym zgłaszany jest 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
Wykonywanie operacji na wartości lub jej przekazywania powoduje zgłoszenie typu błędu RangeError
do funkcji, która nie znajduje się w zbiorze ani w zakresie dozwolonych wartości.
Ten błąd może wystąpić np. w tych sytuacjach:
- W niektórych interfejsach API Date, jeśli używasz nieprawidłowej daty, np. 31 września 2018 r.
- Jeśli przekażesz nieprawidłową wartość do metod numerycznych, 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 niedozwolonej 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: diagnoza i rozwiązywanie błędów dotyczących zakresu zależy od konkretnego komunikatu o błędzie wygenerowanego przez zasadę JavaScriptu. Poniżej podajemy 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 tym plikufaultstring
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 została użyta nieprawidłowa data, to to jest przyczyną błędu.
Oto przykładowy plik źródłowy JavaScript, który prowadzi do tego błędu:
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 widać, że zmiennadate
ma ustawioną nieprawidłową datę:2018-09-31T11:19:08.402Z.
. Ta data jest nieprawidłowa, ponieważ wrzesień ma 30 dni.Uwaga: w tym przykładzie używany jest format ISO-8601:
YYYY-MM-DDTHH:mm:ss.sssZ
.
Rozdzielczość
Dopilnuj, aby podczas korzystania z interfejsów Date API w kodzie JavaScript zawsze używać prawidłowej daty.
Aby poprawić przykładowy kod JavaScript widoczny powyżej, możesz ustawić datę jako Sept 30 2018
w następujący sposób:
var date = new Date('2018-09-30T11:19:08.402Z');
date.toISOString();
Przykład 2. Nieprawidłowy numer przekazany do Precision APIs
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ę 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 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 w opisie błędu użyto dużej liczby, o ile jest on używany w konkretnym wierszu, to właśnie on jest przyczyną 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. Ponieważ nie można ustawić dokładności na tak dużą liczbę cyfr, występuje następujący 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 zakresie 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 pliku referencyjnego
Typ błędu ReferenceError
jest zgłaszany, gdy niezdefiniowana zmienna w JavaScripcie
jest używany (wywoływany) lub obsługiwany.
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
Wskaż zasadę JavaScript, jej plik źródłowy i numer wiersza, do którego odwołuje się niezdefiniowana zmienna. 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 upewnij się, że odwołuje się do niezdefiniowanej zmiennej określonej w kroku 1 powyżej. 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 dana zmienna jest zdefiniowana w kodzie JavaScriptu. Jeśli zmienna nie jest zdefiniowana, to jest przyczyną błędu.
W powyższym przykładowym skrypcie użyto niezadeklarowanej/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 powyższym przykładem kodu JavaScript, 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 zgłaszany, gdy mechanizm JavaScript napotyka tokeny.
lub kolejności tokenów niezgodnej ze składnią języka lub w przypadku nieprawidłowego
są przekazywane do interfejsów API parsera, np. analizy JSON/XML.
Ten błąd występuje na przykład, jeśli nieprawidłowy lub nieprawidłowo sformułowany ładunek JSON jest przekazywany jako dane wejściowe do interfejsu API JSON.parse
używanego w ramach zasady JavaScript.
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
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 tym plikufaultstring
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)\""
Sprawdź wiersz numer 2 w pliku źródłowym JavaScriptu (podany w kroku 1 powyżej) i sprawdź, jaka operacja jest wykonywana. Jeśli wykonywana jest funkcja
JSON.parse()
, sprawdź przekazany do niej 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 JavaScript, który prowadzi do tego błędu:
var input = context.getVariable("request.content"); var result = JSON.parse(input);
W tym przykładzie ładunek żądania (
request.content
) przekazywany do serwera proxy interfejsu API 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 przekazujemy poniższy ładunek XML
<city>Bangalore</city>
InterfejsJSON.parse
API oczekuje podania prawidłowego kodu JSON ale ponieważ ładunek XML jest przekazywany, kończy się niepowodzeniem i zostaje wyświetlony następujący 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 wejściowe do interfejsów API analizy, które są używane w kodzie JavaScript.
Aby rozwiązać problem z omówioną powyżej przykładową zasadą, prześlij 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:
- 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 uzyskuje się z obiektu o wartości null, niezdefiniowanym lub niewłaściwym.
Przykładowy 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. - Jeśli próbujesz odczytać właściwość z obiektu null lub nieokreślonego.
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
Ten błąd występuje wtedy, gdy próbujesz wywołać funkcję na nieobsługiwanym obiekcie.
Jeśli na przykład spróbujesz wywołać funkcję toUpperCase()
dla liczby,
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
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 tagufaultstring
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()
dla obiektu, którego wartość liczbowa wynosi 100.Sprawdź plik źródłowy JavaScript i sprawdź, czy wywołujesz funkcję
toUpperCase()
dla obiektu, którego wartość liczbowa wynosi 100 w wierszu 2 (określonym w kroku 1 powyżej). Jeśli tak, to to jest przyczyną błędu.Oto przykładowy plik źródłowy JavaScript, który prowadzi do tego błędu:
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. FunkcjatoUpperCase()
może być wywoływana tylko w przypadku obiektów ciągu znaków, dlatego 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()
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 z niezdefiniowanego obiektu lub odczytać ją z niego, otrzymasz 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. Zobacz szczegółowe wyjaśnienie poniżej.
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ę 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 tym plikufaultstring
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 oznacza, że właściwości length nie można odczytać z niezdefiniowanego obiektu.
Sprawdź numer wiersza w pliku źródłowym JavaScriptu (podany w kroku 1 powyżej) i upewnij się, że obiekt ma prawidłową wartość lub nie jest zdefiniowany. Konieczne może być przeczytanie i zrozumienie całego pliku źródłowego, aby ustalić, jak zdefiniowano lub wywnioskowano konkretny obiekt, i ustalić, dlaczego obiekt jest niezdefiniowany. Jeśli okaże się, że konkretny obiekt jest rzeczywiście niezdefiniowany i próbujesz uzyskać z niego dostęp do długości właściwości, to właśnie jest przyczyną błędu.
Przyjrzyjmy się przykładowi, aby lepiej zrozumieć ten problem:
Załóżmy, że otrzymujesz z serwera backendu 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 powoduje wspomniany wyżej błąd:
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).jsonData
jest zwykłym ciągiem znaków, więc próba uzyskania dostępu do plikucars
z poziomujsonData
(jsonData.cars
) nie będzie zdefiniowany.Następnie, gdy spróbujesz odczytać niezdefiniowaną właściwość
length
z parametrujsonData.cars
, 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ść
Zadbaj o to, aby zawsze odczytywać dane JSON jako obiekt JSON za pomocą odpowiednich interfejsów API JSON.
Aby poprawić przykładowy kod JavaScript opisany powyżej, możesz użyć funkcji JSON.parse()
na obiekcie response.content
, aby pobrać go jako obiekt JSON. Potem możesz
uzyskać dostęp do tablicy cars
i przeprowadzać ją iteracje;
// 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
Typ błędu URIError
jest zgłaszany w przypadku użycia niedozwolonych znaków w funkcji identyfikatora URI.
Jeśli na przykład przekazujesz do funkcji decodeURI
identyfikator URI zawierający symbol procentu
decodeURIComponent
, wystąpi 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
Zidentyfikuj zasadę JavaScript, jej plik źródłowy, numer wiersza, w którym wystąpił błąd i jaki jest jego opis. Wszystkie te informacje można znaleźć tutaj: element faultstring odpowiedzi z błędem. Na przykład w poniższym ciąg znaków, nazwa zasady JavaScript to
URIDecode</code
JavaScript plik źródłowy 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 pliku
URIDecode.js
używana jest nieprawidłowa sekwencja 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 właśnie to jest przyczyną błędu.
Oto przykładowy plik źródłowy JavaScript, który prowadzi do tego błędu:
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żywane w funkcjach URI są legalne i dozwolone.
Aby rozwiązać problem z przykładowym kodem JavaScript opisanym powyżej, zakoduj symbol procentu. Przykład: %25
:
var str = "75%25-Completed";
var decoded_str = decodeURIComponent(str);
context.setVariable("decoded_str", decoded_str);