Rozwiązywanie problemów z błędami środowiska wykonawczego zasad JavaScript

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 możliwe przyczyny

Zasady JavaScript mogą zgłaszać wiele różnych typów błędów ScriptExecutionFailed. W tabeli poniżej znajdziesz niektóre z najczęstszych błędów:

Rodzaj błędu Przyczyna
Błąd zakresu Jeśli użyjesz liczby spoza zakresu prawidłowych wartości, zostanie zgłoszony błąd RangeError.
Błąd odwołania Błąd ReferenceError jest zgłaszany, gdy używasz (odwołujesz się do) zmiennej, która nie została zadeklarowana.
Błąd składni Jeśli spróbujesz ocenić kod z błędem składniowym, zostanie zgłoszony błąd SyntaxError.
Błąd typu Jeśli użyjesz operacji, która wykracza poza zakres oczekiwanych typów, zostanie zgłoszony błąd TypeError.
Błąd URI Jeśli w funkcji URI użyjesz niedozwolonych znaków, zostanie zgłoszony błąd URIError.

Błąd zakresu

Typ błędu RangeError jest zgłaszany, gdy wykonujesz operację na wartości lub przekazujesz wartość do funkcji, która nie znajduje się w zbiorze ani zakresie dozwolonych wartości.

Ten błąd jest zgłaszany na przykład w tych okolicznościach:

  1. Jeśli w przypadku niektórych interfejsów Date API użyjesz nieprawidłowej daty, np. 31 września 2018 r.
  2. Jeśli do metod numerycznych, takich jak Number.toPrecision(), Number.tofixed() czy Number.toExponential(), przekażesz nieprawidłową wartość. Jeśli na przykład w Number.toPrecision() przekażesz dużą wartość, np. 400 lub 500, zobaczysz błąd zakresu.
  3. 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ązanie błędów zakresu zależą od dokładnego komunikatu o błędzie zwracanego przez zasady JavaScript. 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

  1. Określ zasady JavaScript, 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 faultstring nazwa zasady JavaScriptu to ParseDate, plik źródłowy JavaScriptu to ParseDate.js, numer wiersza, w którym wystąpił błąd, to 2, a opis błędu to Date is invalid:

    "faultstring": "Execution of ParseDate failed with error: Javascript runtime error: \"RangeError: Date is invalid. (ParseDate.js:2)\""
    
  2. Sprawdź źródłowy plik JavaScript (zidentyfikowany w kroku 1 powyżej) i zobacz, czy w wierszu wskazanym w błędzie jest używana nieprawidłowa data lub czy zmienna użyta w tym wierszu zawiera nieprawidłową datę. Jeśli użyto nieprawidłowej daty, to ona 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 użyto zmiennej date. Po sprawdzeniu pliku źródłowego widać, że zmienna date ma nieprawidłową datę: 2018-09-31T11:19:08.402Z.. Ta data jest nieprawidłowa, ponieważ wrzesień nie ma 31 dni.

    Uwaga: w tym przykładzie użyto formatu ISO-8601: YYYY-MM-DDTHH:mm:ss.sssZ

Rozdzielczość

Podczas korzystania z interfejsów API daty w kodzie JavaScriptu zawsze używaj prawidłowej daty.

Aby poprawić przykładowy kod JavaScriptu pokazany powyżej, 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łowa liczba przekazana do interfejsów API 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

  1. Określ zasady JavaScript, 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 faultstring nazwa zasady JavaScriptu to SetNumberPrecision, plik źródłowy JavaScriptu to SetNumberPrecision.js, numer wiersza, w którym wystąpił błąd, to 2, a opis błędu to Precision 400 out of range..

    "faultstring": "Execution of SetNumberPrecision failed with error: Javascript runtime error: "RangeError: Precision 400 out of range. (SetNumberPrecision.js:2)\""
    
  2. Sprawdź źródłowy plik JavaScript (zidentyfikowany w kroku 1 powyżej). Jeśli duża liczba wymieniona w opisie błędu jest używana w konkretnym numerze wiersza, to jest to 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);
    

    W tym przykładzie w wierszu 2 użyto dużej wartości 400. Nie możesz ustawić precyzji na tak dużą liczbę cyfr, więc pojawi się poniższy błąd:

    "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 zbiorze dozwolonych wartości.

Aby rozwiązać problem z przykładowym kodem JavaScript opisanym powyżej, ustaw liczbę cyfr znaczących na 2, co jest prawidłową wartością:

var number = 12.3456;
var rounded_number = number.toPrecision(2);
print("rounded_number = " + rounded_number);

Błąd odwołania

Typ błędu ReferenceError jest zgłaszany, gdy w kodzie JavaScript używana jest (odwoływana się do niej) lub przetwarzana 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

  1. Zidentyfikuj 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 tym faultstring nazwa zasady JavaScriptu to ComputeTotalPrice, odpowiedni plik źródłowy to ComputeTotalPrice.js, numer wiersza, w którym wystąpił błąd, to 3, a nazwa niezdefiniowanej zmiennej to price..

    "faultstring": "Execution of ComputeTotalPrice failed with error: Javascript runtime error: \"ReferenceError: \"price\" is not defined. (ComputeTotalPrice.js:3)\""
    
  2. Sprawdź numer wiersza w pliku źródłowym JavaScriptu i upewnij się, że odwołuje się on do niezdefiniowanej zmiennej zidentyfikowanej w kroku 1 powyżej. Na przykład ten kod JavaScriptu odwołuje się do niezdefiniowanej zmiennej price w wierszu 3, co odpowiada temu, co znajduje się w elemencie 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);
    
    
  3. Sprawdź, czy w kodzie JavaScript jest zdefiniowana konkretna zmienna. Jeśli zmienna nie jest zdefiniowana, to jest to przyczyną błędu.

    W przykładowym skrypcie powyżej użyto niezadeklarowanej/zdefiniowanej zmiennej price, dlatego zobaczysz ten 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 zmienną price 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 silnik JavaScript napotka tokeny lub kolejność tokenów, które nie są zgodne ze składnią języka, lub gdy do interfejsów API analizatora, takich jak analizator JSON/XML, zostanie przekazane wejście w nieprawidłowym formacie.

Na przykład jeśli nieprawidłowy lub źle sformatowany ładunek JSON zostanie przekazany jako dane wejściowe do interfejsu API JSON.parse używanego w zasadach JavaScript, pojawi 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

  1. 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 faultstring nazwa zasady JavaScriptu to ParseJSONRequest, plik źródłowy JavaScriptu to ParseJSONRequest.js, numer wiersza, w którym wystąpił błąd, to 2, a opis błędu to Unexpected token:

    "faultstring": "Execution of ParseJSONRequest failed with error: Javascript runtime error: \"SyntaxError: Unexpected token: <. (ParseJSONRequest.js:2)\""
    
  2. Sprawdź wiersz 2 w pliku źródłowym JavaScript (zidentyfikowanym w kroku 1 powyżej) i zobacz, jakie działanie jest wykonywane. 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łową strukturę JSON, to jest to 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) przekazywany do proxy interfejsu API jest używany jako dane wejściowe funkcji JSON.parse().

    Oto przykładowe wywołanie interfejsu API, które pokazuje, jak przekazano żądanie:

    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 JSON.parse API oczekuje przekazania prawidłowego kodu JSON, ale ponieważ zamiast niego przekazywany jest ładunek XML, zwraca poniższy 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 analizowania używanych w kodzie JavaScript.

Aby rozwiązać problem z przykładowymi zasadami omówiony powyżej, przekaż prawidłowe żądanie ładunku 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 na obiekcie o wartości null, niezdefiniowanym lub nieprawidłowym.
  • Dostęp do właściwości jest uzyskiwany z obiektu o wartości null, niezdefiniowanego lub nieprawidłowego.

Na przykład zgłaszany jest błąd typu:

  • Jeśli spróbujesz wywołać funkcję toUpperCase() na numerze. Dzieje się tak, ponieważ funkcja toUpperCase() może być wywoływana tylko w przypadku obiektów ciągów znaków.
  • Jeśli spróbujesz odczytać właściwość z obiektu o wartości null lub undefined.

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ływanie 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() na numerze, pojawi się błąd. Dzieje się tak, ponieważ funkcji toUpperCase() można używać tylko w przypadku obiektów 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

  1. 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 faultstring nazwa zasady JavaScript to ConvertToUpperCase, plik źródłowy to ConvertToUpperCase.js, numer wiersza to 2, 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.

  2. Sprawdź źródłowy plik JavaScript i upewnij się, że 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 to 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 pokazanym powyżej kodzie JavaScript zmienna number ma wartość 100. Następnie na obiekcie liczbowym wywoływana jest funkcja toUpperCase()(. Funkcję toUpperCase() można wywołać tylko w przypadku obiektów ciągów znaków, dlatego otrzymasz 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 przypadku prawidłowych obiektów.

Aby poprawić powyższy przykład, możesz utworzyć zmienną tekstową, a następnie 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 ją odczytać, 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, ale obiekt jest niezdefiniowany. Szczegółowe wyjaśnienie znajdziesz 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

  1. Określ zasady JavaScript, 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 przypadku faultstring nazwa zasady to ParseJSONResponse, plik źródłowy to ParseJSONResponse.js, numer wiersza to 6, a opis błędu to Cannot 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.

  2. Sprawdź numer wiersza w źródłowym pliku JavaScript (określonym w kroku 1 powyżej) i upewnij się, że obiekt ma prawidłową wartość lub nie jest niezdefiniowany. Aby określić, jak zdefiniowano lub wyprowadzono konkretny obiekt, i ustalić, dlaczego jest on nieokreślony, może być konieczne przeczytanie i zrozumienie całego pliku źródłowego. Jeśli okaże się, że dany obiekt jest niezdefiniowany i próbujesz uzyskać dostęp do jego właściwości length, to jest to przyczyną błędu.

    Aby lepiej zrozumieć ten problem, przeanalizujmy przykład:

    1. Załóżmy, że z serwera backendu otrzymujesz tę odpowiedź JSON:

      {
          "cars": [
             { "name":"Toyota", "count": 150 }
             { "name":"Honda", "count": 100 },
             { "name":"Ford", "count": 75 }
          ]
      }
      
    2. Oto przykładowy plik źródłowy JavaScript, który analizuje tę odpowiedź JSON i powoduje wspomniany powyż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);
        }
      
    3. Po dokładnym przeanalizowaniu kodu JavaScript w wierszu 2 widać, że wartość response.content jest odczytywana lub zapisywana w zmiennej jsonData jako zwykły ciąg znaków (w cudzysłowie).

    4. Ponieważ jsonData jest zwykłym ciągiem znaków, gdy spróbujesz uzyskać dostęp do cars z jsonData, wartość jsonData.cars będzie niezdefiniowana.

    5. Następnie, gdy spróbujesz odczytać właściwość length z jsonData.cars, która jest niezdefiniowana, 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ść

Zawsze odczytuj dane JSON jako obiekt JSON za pomocą odpowiednich interfejsów API JSON.

Aby poprawić opisany powyżej przykładowy kod JavaScript, możesz użyć funkcji JSON.parse() na obiekcie response.content, aby uzyskać go w postaci obiektu JSON. Następnie możesz uzyskać dostęp do tablicy cars i przejść przez nią.

// 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

Typ błędu URIError jest zgłaszany, jeśli w funkcji URI użyjesz niedozwolonych znaków. Jeśli na przykład przekażesz do funkcji decodeURI lub decodeURIComponent identyfikator URI zawierający symbol procentu, 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

  1. 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 błędu nazwa zasady JavaScript to URIDecode</code, plik źródłowy JavaScript to URIDecode.js, numer wiersza to 2, a opis błędu to Malformed 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żyto nieprawidłowej sekwencji URI.

  2. Sprawdź plik źródłowy JavaScript i upewnij się, że argument przekazywany do żadnej z funkcji URI nie zawiera niedozwolonych znaków. Jeśli tak, to jest to przyczyną błędu.

    Oto przykładowy plik źródłowy 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 JavaScript pokazanym powyżej zmienna str przekazywana do funkcji decodeURIComponent() zawiera symbol procentu, który jest uznawany za nieprawidłowy znak. Dlatego otrzymujesz błąd:

    "Execution of URIDecode failed with error: Javascript runtime error: \"URIError: Malformed URI sequence. (URIDecode.js:2)\""
    

Rozdzielczość

Sprawdź, czy wszystkie znaki użyte w funkcjach URI są prawidłowe i dozwolone.

Aby rozwiązać problem z opisanym powyżej przykładowym kodem JavaScript, zakoduj symbol procentu. Na przykład: %25

var str = "75%25-Completed";
var decoded_str = decodeURIComponent(str);
context.setVariable("decoded_str", decoded_str);