JavaScript politikası çalışma zamanı hatasını giderme

Apigee Edge belgelerini görüntülüyorsunuz.
Git: Apigee X belgeleri.
bilgi

ScriptExecutionFailed

Hata kodu

steps.javascript.ScriptExecutionFailed

Hata yanıtı gövdesi

{
    "fault": {
        "faultstring": "Execution of javascript_policy_name failed with error: error_type: error_description. (javascript_source_file_name)\"",
        "detail": {
            "errorcode": "steps.javascript.ScriptExecutionFailed"
        }
    }
}

Hata türleri ve olası nedenleri

JavaScript politikası, birçok farklı türde ScriptExecutionFailed hatası verebilir. Daha sık görülen hatalardan bazıları aşağıdaki tabloda listelenmiştir:

Hata Türü Neden
Aralık Hatası Yasal değer aralığının dışında bir sayı kullanırsanız RangeError hatası oluşur.
Referans Hatası Beyan edilmemiş bir değişken (referans) kullanırsanız ReferenceError hatası verilir.
Söz dizimi hatası Söz dizimi hatası içeren kodu değerlendirmeye çalışırsanız SyntaxError hatası oluşur.
Tür Hatası Beklenen türlerin aralığı dışında bir işlem kullanırsanız TypeError hatası atılır.
URI Hatası Bir URI işlevinde geçersiz karakterler kullanırsanız URIError hatası bildirilir.

Aralık hatası

Bir değer üzerinde işlem yaptığınızda veya bir değeri, izin verilen değerler grubunda veya aralığında olmayan bir işleve ilettiğinizde RangeError hata türü atılır.

Örneğin, bu hata aşağıdaki durumlarda oluşur:

  1. Bazı Date API'leriyle 31 Eylül 2018 gibi geçersiz bir tarih kullanırsanız.
  2. Number.toPrecision(), Number.tofixed() veya Number.toExponential() gibi sayısal yöntemlere geçersiz bir değer iletirseniz. Örneğin, Number.toPrecision() yönteminde 400 veya 500 gibi büyük bir değer ilettiğinizde bir aralık hatası görürsünüz.
  3. Geçersiz uzunluğa sahip bir dizi oluşturmanız.

Hata yanıtı gövdesi

{
    "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"
        }
    }
}

Not: Aralık hatalarının teşhisi ve çözümü, JavaScript politikasının oluşturduğu hata mesajına bağlıdır. Size referans olması için aşağıda birkaç örnek açıklanmıştır.

1. Örnek: Geçersiz Tarih

Örnek hata yanıtı gövdesi

{
    "fault": {
        "faultstring": "Execution of ParseDate failed with error: Javascript runtime error: \"RangeError: Date is invalid. (ParseDate.js:2)\"",
        "detail": {
            "errorcode": "steps.javascript.ScriptExecutionFailed"
        }
    }
}

Teşhis

  1. JavaScript politikasını, kaynak dosyasını, hatanın oluştuğu satır numarasını ve hata açıklamasını tanımlayın. Tüm bu bilgileri, hata yanıtının faultstring öğesinde bulabilirsiniz. Örneğin, aşağıdaki faultstring öğesinde JavaScript politikası adı ParseDate, JavaScript kaynak dosyası ParseDate.js, hatanın oluştuğu satır numarası 2 ve hata açıklaması Date is invalid'tir:

    "faultstring": "Execution of ParseDate failed with error: Javascript runtime error: \"RangeError: Date is invalid. (ParseDate.js:2)\""
    
  2. JavaScript kaynak dosyasını (yukarıdaki 1. adımda tanımlanır) inceleyin ve hatada belirtilen satır numarasında geçersiz bir tarih kullanılıp kullanılmadığını veya satır numarasında kullanılan değişkenin tarihinin geçersiz olup olmadığını kontrol edin. Geçersiz bir tarih kullanılıyorsa hatanın nedeni budur.

    Bu hataya neden olan örnek bir JavaScript kaynak dosyasını aşağıda bulabilirsiniz:

    ParseDate.js

    var date = new Date('2018-09-31T11:19:08.402Z');
    date.toISOString();
    

    Bu örnekte, 2. satırda date değişkeni kullanılmıştır. Kaynak dosyayı incelediğinizde, date değişkeninin geçersiz bir tarihle ayarlandığını fark edebilirsiniz: 2018-09-31T11:19:08.402Z. Eylül ayında 31 gün olmadığından bu tarih geçersizdir.

    Not: Bu örnekte kullanılan ISO-8601 biçimi şu şekildedir: YYYY-MM-DDTHH:mm:ss.sssZ

Çözünürlük

JavaScript kodunda Tarih API'lerini kullanırken her zaman geçerli bir tarih kullandığınızdan emin olun.

Yukarıda gösterilen örnek JavaScript kodunu düzeltmek için tarihi aşağıda gösterildiği gibi Sept 30 2018 biçiminde ayarlayabilirsiniz:

var date = new Date('2018-09-30T11:19:08.402Z');
date.toISOString();

2. Örnek: Precision API'lere geçersiz sayı iletildi

Örnek hata yanıtı gövdesi

{
    "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"
        }
    }
}

Teşhis

  1. JavaScript politikasını, kaynak dosyasını, hatanın oluştuğu satır numarasını ve hata açıklamasını belirtin. Tüm bu bilgileri, hata yanıtının faultstring öğesinde bulabilirsiniz. Örneğin, aşağıdaki faultstring öğesinde JavaScript politika adı SetNumberPrecision, JavaScript kaynak dosyası SetNumberPrecision.js, hatanın oluştuğu satır numarası 2 ve hata açıklaması Precision 400 out of range. şeklindedir.

    "faultstring": "Execution of SetNumberPrecision failed with error: Javascript runtime error: "RangeError: Precision 400 out of range. (SetNumberPrecision.js:2)\""
    
  2. JavaScript kaynak dosyasını inceleyin (yukarıdaki 1. adımda tanımlanır). Belirli bir satır numarasında, hata açıklamasının parçası olarak belirtilen büyük sayı kullanılıyorsa hatanın nedeni budur.

    Bu hataya neden olan örnek bir JavaScript kaynak dosyasını aşağıda bulabilirsiniz:

    SetNumberPrecision.js

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

    Bu örnekte, 2. satırda 400 değeriyle büyük bir değer kullanıldığına dikkat edin. Hassasiyeti bu kadar büyük bir basamak sayısına ayarlayamayacağınız için aşağıdaki hatayı alırsınız:

    "faultstring": "Execution of SetNumberPrecision failed with error: Javascript runtime error: "RangeError: Precision 400 out of range. (SetNumberPrecision.js:2)\""
    

Çözünürlük

toPrecision() yönteminde kullanılan sayının, izin verilen değerler grubu dahilinde olduğundan emin olun.

Yukarıda açıklanan örnek JavaScript ile ilgili sorunu düzeltmek için anlamlı basamak sayısını geçerli olan 2 olarak ayarlayın:

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

Referans hatası

JavaScript'inizde tanımlanmamış bir değişken olduğunda ReferenceError hata türü atılıyor kullanılan (referans verilen) veya işletilen içeriklerdir.

Hata yanıtı gövdesi

{
    "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"
        }
    }
}

Örnek hata yanıtı gövdesi

{
    "fault": {
        "faultstring": "Execution of ComputeTotalPrice failed with error: Javascript runtime error: \"ReferenceError: \"price\" is not defined. (ComputeTotalPrice.js:3)\"",
        "detail": {
            "errorcode": "steps.javascript.ScriptExecutionFailed"
        }
    }
}

Teşhis

  1. JavaScript politikasını, kaynak dosyasını ve tanımsız değişkene referans verilen satır numarasını belirleyin. Tüm bu bilgileri, hata yanıtının faultstring öğesinde bulabilirsiniz. Örneğin, aşağıdaki faultstring politikasında JavaScript politikası adı ComputeTotalPrice, karşılık gelen kaynak dosya ComputeTotalPrice.js, hatanın oluştuğu satır numarası 3 ve tanımlanmamış değişken adı price. şeklindedir

    "faultstring": "Execution of ComputeTotalPrice failed with error: Javascript runtime error: \"ReferenceError: \"price\" is not defined. (ComputeTotalPrice.js:3)\""
    
  2. JavaScript kaynak dosyasında satır numarasını inceleyin ve yukarıdaki 1. adımda tanımlanan tanımsız değişkene atıfta bulunulup bulunulmadığını doğrulayın. Örneğin, aşağıdaki JavaScript kodu, 3. satırda bulunan ve hatalı dizedekiyle eşleşen tanımlanmamış price değişkenine başvuruyor:

    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. Belirli değişkenin JavaScript kodunda tanımlanıp tanımlanmadığını kontrol edin. Değişken tanımlanmamışsa hatanın nedeni budur.

    Yukarıda gösterilen örnek komut dosyasında, tanımlanmamış/tanımlanmış price değişkeni kullanılmıştır. Bu nedenle aşağıdaki hatayı görürsünüz:

    "faultstring": "Execution of ComputeTotalPrice failed with error: Javascript runtime error: \"ReferenceError: \"price\" is not defined. (ComputeTotalPrice.js:3)\""
    

Çözünürlük

JavaScript kodunda referans verilen tüm değişkenlerin doğru şekilde tanımlandığından emin olun.

Yukarıda gösterilen örnek JavaScript ile ilgili sorunu düzeltmek için değişken fiyatı kullanmadan önce tanımlayın. Örneğin:

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);

Sözdizimi hatası

JavaScript motoru, jetonlarla karşılaştığında SyntaxError hata türü atılır veya dilin söz dizimine uymayan bir jeton sırası veya geçersiz bir biçim girişi, JSON/XML ayrıştırması gibi ayrıştırıcı API'lerine iletilir.

Örneğin, geçersiz veya bozuk JSON yükü, JavaScript politikasında kullanılan JSON.parse API'sine giriş olarak aktarılırsa bu hatayı alırsınız.

Hata yanıtı gövdesi

{
    "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"
        }
    }
}

Örnek hata yanıtı gövdesi

{
    "fault": {
        "faultstring": "Execution of ParseJSONRequest failed with error: Javascript runtime error: \"SyntaxError: Unexpected token: <. (ParseJSONRequest.js:2)\"",
        "detail": {
            "errorcode": "steps.javascript.ScriptExecutionFailed"
        }
    }
}

Teşhis

  1. JavaScript politikasını, kaynak dosyasını, hatanın oluştuğu satır numarasını ve hata açıklamasını tanımlayın. Tüm bu bilgileri, hata yanıtının faultstring öğesinde bulabilirsiniz. Örneğin, aşağıdaki faultstring öğesinde JavaScript politika adı ParseJSONRequest, JavaScript kaynak dosyası ParseJSONRequest.js, hatanın oluştuğu satır numarası 2 ve hata açıklaması Unexpected token şeklindedir:

    "faultstring": "Execution of ParseJSONRequest failed with error: Javascript runtime error: \"SyntaxError: Unexpected token: <. (ParseJSONRequest.js:2)\""
    
  2. JavaScript kaynak dosyasındaki 2. satırı (yukarıdaki 1. adımda tanımlanır) ve hangi işlemin gerçekleştirildiğini kontrol edin. Bir JSON.parse() işlevi yürütülüyorsa bu işleve geçirilen giriş parametresini kontrol edin. Giriş parametresi geçerli değilse veya hatalı biçimlendirilmiş JSON ise hata bununla ilgilidir.

    Aşağıda, bu hataya neden olan örnek bir JavaScript kodu verilmiştir:

    var input = context.getVariable("request.content");
    var result = JSON.parse(input);
    

    Bu örnekte, API Proxy'sine iletilen istek yükü (request.content), JSON.parse() işlevine giriş olarak kullanılmıştır.

    İsteğin nasıl iletildiğini gösteren örnek API çağrısını burada bulabilirsiniz:

    curl -v "http://<org>-<env>.apigee.net/v1/js-demo" -H "Content-Type: application/json" -X POST -d '<city>Bangalore</city>'
    

    Yukarıdaki istekte API Proxy'sine aşağıdaki XML yükü iletilir <city>Bangalore</city> JSON.parse API, geçerli bir JSON'ın iletilmesini bekler ancak bunun yerine bir XML yükü geçirildiği için aşağıdaki hatayla başarısız olur:

    "Execution of ParseJSONRequest failed with error: Javascript runtime error: \"SyntaxError: Unexpected token: <. (ParseJSONRequest.js:2)\""
    

Çözünürlük

JavaScript kodunda kullanılan ayrıştırma API'lerine geçerli girişler gönderdiğinizden emin olun.

Yukarıda açıklanan örnek politikayla ilgili sorunu düzeltmek için aşağıdaki gibi geçerli bir JSON yük isteği gönderin:

curl -v "http://<org>-<env>.apigee.net/v1/js-demo" -H "Content-Type: application/json" -X POST -d '{"city" : "Bangalore"}'

Tür hatası

Şu durumlarda TypeError hata türü verilir:

  • Bir işleve aktarılan bir işlenen veya bağımsız değişken, söz konusu operatör veya işlev tarafından beklenen türle uyumsuz.
  • Bir işlev boş, tanımlanmamış veya yanlış bir nesnede çağrılıyor.
  • Bir özelliğe boş, tanımlanmamış veya yanlış bir nesneden erişiliyor.

Örneğin, bir tür hatası atılır:

  • toUpperCase() işlevini bir sayı üzerinde çağırmaya çalışırsanız Bu çünkü toUpperCase() işlevi yalnızca dize nesneleri üzerinde çağrılabilir.
  • Bir özelliği, boş veya tanımlanmamış bir nesneden okumaya çalışırsanız.

Hata yanıtı gövdesi

{
    "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"
        }
    }
}

1. Örnek: Yanlış nesnede işlev çağırma

Desteklenmeyen bir nesnede bir işlevi çağırmaya çalışırsanız bu hatayı alırsınız. Örneğin, toUpperCase() işlevini bir sayı üzerinde çağırmaya çalışırsanız gösterir. Bunun nedeni, toUpperCase() işlevinin yalnızca dize nesneleri.

Örnek hata yanıtı gövdesi

{
    "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"
        }
    }
}

Teşhis

  1. JavaScript politikasını, kaynak dosyasını, hatanın oluştuğu satır numarasını ve hata açıklamasını tanımlayın. Tüm bu bilgileri, hata yanıtının faultstring öğesinde bulabilirsiniz. Örneğin, aşağıdaki faultstring öğesinde JavaScript politika adı ConvertToUpperCase, kaynak dosya ConvertToUpperCase.js, satır numarası 2 ve hata açıklaması **Cannot find function toUpperCase in object 100. şeklindedir.

    "faultstring": "Execution of ConvertToUpperCase failed with error: Javascript runtime error: \"TypeError: Cannot find function toUpperCase in object 100. (ConvertToUpperCase.js:2)\""
    

    Hata açıklaması, toUpperCase() işlevini sayısal değeri 100 olan bir nesne üzerinde çağırdığınızı göstermektedir.

  2. JavaScript kaynak dosyasını inceleyin ve toUpperCase() işlevini, 2. satırda sayısal değeri 100 olan bir nesnede (yukarıdaki 1. adımda tanımlanır) çağırıp çalıştırmadığınızı doğrulayın. Cevabınız evetse hatanın nedeni budur.

    Bu hataya neden olan örnek bir JavaScript kaynak dosyasını aşağıda bulabilirsiniz:

    ConvertToUpperCase.js

    var number = 100;
    var result = number.toUpperCase();
    

    Yukarıda gösterilen JavaScript kodunda number değişkeni 100 değerine ayarlanmıştır. Ardından toUpperCase()( işlevi sayı nesnesinde çağrılır. toUpperCase() işlevi yalnızca dize nesnelerinde çağrılabildiğinden hata mesajı alırsınız:

    "Execution of ConvertToUpperCase failed with error: Javascript runtime error: \"TypeError: Cannot find function toUpperCase in object 100. (ConvertToUpperCase.js:2)\""
    

Çözünürlük

Geçerli nesnelerde her zaman toUpperCase() gibi işlevleri kullanın.

Yukarıda gösterilen örneği düzeltmek için bir dize değişkeni oluşturabilir ve ardından, bir dizedeki toUpperCase() işlevi:

var text = "Hello Apigee !";
var result = text.toUpperCase();

2. örnek: Tanımlanmamış bir nesneden özellik okunamıyor

Tanımlanmamış bir nesneden bir özelliğe erişmeye/okumaya çalışırsanız bu hata mesajını alıyorsunuz. Örneğin, bu hata dizide bir nesnedir, ancak nesne tanımsızdır. Ayrıntılı açıklamayı inceleyin bölümüne göz atın.

Örnek hata yanıtı gövdesi

{
    "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"
        }
    }
}

Teşhis

  1. JavaScript politikasını, kaynak dosyasını, hatanın oluştuğu satır numarasını ve hata açıklamasını tanımlayın. Tüm bu bilgileri, hata yanıtının faultstring öğesinde bulabilirsiniz. Örneğin, aşağıdaki faultstring politikasında politika adı ParseJSONResponse, kaynak dosya ParseJSONResponse.js, satır numarası 6 ve hata açıklaması Cannot read property "length" from undefined şeklindedir.

    "faultstring": "Execution of ParseJSONResponse failed with error: Javascript runtime error: \"TypeError: Cannot read property \"length\" from undefined. (ParseJSONResponse.js:6)\""
    

    Hata, length özelliğinin tanımlanmamış bir nesneden okunamadığını gösterir.

  2. JavaScript kaynak dosyasındaki satır numarasını inceleyin (yukarıdaki 1. adımda tanımlanır) ve nesnenin geçerli bir değere sahip olup olmadığını veya tanımsız olup olmadığını doğrulayın. Belirli bir nesnenin nasıl tanımlandığını veya türetildiğini ve nesnenin neden tanımlanmamış olarak bulunduğunu belirlemek için kaynak dosyanın tamamını okuyup anlamanız gerekebilir. Belirli bir nesnenin gerçekten tanımsız olduğunu görürseniz ve bu nesneden özellik uzunluğuna erişmeye çalışırsanız hatanın nedeni budur.

    Bu sorunu daha iyi anlamak için bir örnek inceleyelim:

    1. Arka uç sunucusundan aşağıdaki JSON yanıtını aldığınızı varsayalım:

      {
          "cars": [
             { "name":"Toyota", "count": 150 }
             { "name":"Honda", "count": 100 },
             { "name":"Ford", "count": 75 }
          ]
      }
      
    2. Burada, bu JSON yanıtını ayrıştıran ve aşağıda belirtilen hataya yol açar:

      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. JavaScript kodunu dikkatli bir şekilde incelediğinizde, 2. satırda, response.content öğesinin normal bir dize olarak (tırnak işareti içinde) jsonData değişkeninde okunduğunu/depolandığını görürsünüz.

    4. jsonData normal bir dize olduğundan, jsonData (jsonData.cars) üzerinden cars özelliğine erişmeye çalıştığınızda tanımsız olacaktır.

    5. Daha sonra, tanımlanmamış jsonData.cars kodundan length özelliğini okumaya çalıştığınızda şu hatayı alırsınız:

      "faultstring": "Execution of ParseJSONResponse failed with error: Javascript runtime error: \"TypeError: Cannot read property \"length\" from undefined. (ParseJSONResponse.js:6)\""
      

Çözünürlük

İlgili JSON API'lerini kullanarak JSON verilerini her zaman bir JSON nesnesi olarak okuduğunuzdan emin olun.

Yukarıda açıklanan örnek JavaScript'i düzeltmek için JSON.parse() işlevini kullanabilirsiniz. response.content nesnesini tanımlarken bunu JSON nesnesi olarak alın. Bu adımdan sonra cars dizisine erişip dizide başarıyla yineleme yapabilirsiniz.

// 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);
}

URI Hatası

Bir URI işlevinde geçersiz karakterler kullanırsanız URIError hata türü atılır. Örneğin, decodeURI veya decodeURIComponent işlevleri yerine bu hatayı alırsınız.

Hata yanıtı gövdesi

{
    "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"
        }
    }
}

Örnek hata yanıtı gövdesi

{
    "fault": {
        "faultstring": "Execution of URIDecode failed with error: Javascript runtime error: \"URIError: Malformed URI sequence. (URIDecode.js:2)\"",
        "detail": {
            "errorcode": "steps.javascript.ScriptExecutionFailed"
        }
    }
}

Teşhis

  1. JavaScript politikasını, kaynak dosyasını, hatanın oluştuğu satır numarasını ve hata açıklamasını belirtin. Tüm bu bilgileri hata yanıtının hata dizesi öğesi. Örneğin, aşağıdaki hata dizesi, JavaScript politikasının adı: URIDecode</code JavaScript kaynak dosya URIDecode.js, satır numarası ise 2 ve hata açıklaması Malformed URI sequence:

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

    Hata açıklaması, URIDecode.js sayfasının 2. satırında hatalı biçimlendirilmiş bir URI sırasının kullanıldığını gösteriyor.

  2. JavaScript kaynak dosyasını inceleyin ve URI işlevlerinden herhangi birine iletilen bağımsız değişkenin geçersiz karakter içerip içermediğini doğrulayın. Cevabınız evetse hatanın nedeni budur.

    Bu hataya neden olan örnek bir JavaScript kaynak dosyasını aşağıda bulabilirsiniz:

    URIDecode.js

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

    Yukarıda gösterilen örnek JavaScript kodunda, decodeURIComponent() öğesine iletilen str değişkeni, geçersiz bir karakter olarak kabul edilen bir yüzde sembolü içeriyor; Bu nedenle şu hatayı alırsınız:

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

Çözünürlük

URI işlevlerinde kullanılan tüm karakterlerin yasal olduğundan ve izin verildiğinden emin olun.

Yukarıda açıklanan örnek JavaScript ile ilgili sorunu düzeltmek için yüzde simgesini kodlayın. Örneğin, %25:

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