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

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:

  1. Jeśli w niektórych interfejsach API Date używasz nieprawidłowej daty, takiej jak 31 września 2018 r.,
  2. Jeśli przekazujesz nieprawidłową wartość przy użyciu metod liczbowych takich jak Number.toPrecision(), Number.tofixed() czy Number.toExponential(). Załóżmy, że w metodzie Number.toPrecision() prześlesz dużą wartość, taką jak 400 lub 500, zobaczysz błąd zakresu.
  3. 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

  1. 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 pliku faultstring nazwa zasady JavaScriptu to ParseDate, plik źródłowy JavaScript 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ź 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 zmienna date 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

  1. 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 pliku faultstring nazwa zasady JavaScriptu to SetNumberPrecision, plik źródłowy JavaScript 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ź 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

  1. 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 pliku 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 niezdefiniowana nazwa 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 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);
    
    
  3. 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

  1. 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 pliku faultstring nazwa zasady JavaScriptu to ParseJSONRequest, plik źródłowy JavaScript 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 (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 funkcji JSON.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. Interfejs JSON.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

  1. 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 pliku faultstring nazwa zasady JavaScriptu 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() w obiekcie, którego wartość liczbowa to 100.

  2. 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 funkcja toUpperCase()(. 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

  1. 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 parametrze 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 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:

    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 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);
        }
      
    3. Po dokładnym przeanalizowaniu kodu JavaScriptu można zauważyć, że w wierszu nr 2 wartość response.contentjest odczytana/zapisana w zmiennej jsonData jako zwykły ciąg znaków (w cudzysłowach).

    4. Ponieważ jsonData jest zwykłym ciągiem znaków, próba uzyskania dostępu do cars z poziomu jsonData (jsonData.cars) będzie nieokreślona.

    5. Następnie, przy próbie odczytania właściwości length z jsonData.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

  1. 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 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 w tabeli URIDecode.js używana jest nieprawidłowa sekwencja identyfikatora URI.

  2. 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 do decodeURIComponent() 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);