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

Apigee Edge belgelerini görüntülüyorsunuz.
Apigee X belgelerine gidin.
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ğerler aralığının dışında bir sayı kullanırsanız RangeError hatası verilir.
Referans Hatası Bildirilmemiş bir değişkeni kullanırsanız (referans verirseniz) ReferenceError hatası verilir.
Söz dizimi hatası Söz dizimi hatası olan kodu değerlendirmeye çalışırsanız SyntaxError (Söz Dizimi Hatası) oluşturulur.
Tür Hatası (Type Error) Beklenen türler aralığının dışında bir işlem kullanırsanız TypeError hatası verilir.
URI Hatası Bir URI işlevinde geçersiz karakterler kullanırsanız URIError hatası verilir.

Aralık hatası

İzin verilen değerler kümesinde veya aralığında olmayan bir değerle işlem yaptığınızda ya da bir işleve değer ilettiğinizde RangeError hata türü oluşturulur.

Örneğin, bu hata aşağıdaki durumlarda gösterilir:

  1. Bazı Tarih API'lerinde 31 Eylül 2018 gibi geçersiz bir tarih kullanıyorsanı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ğinizi varsayalım. Bu durumda bir aralık hatası görürsünüz.
  3. Geçersiz uzunlukta bir dizi oluşturursanı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ı tarafından verilen tam hata mesajına bağlıdır. Aşağıda, referans olarak kullanabileceğiniz 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ı belirleyin. Tüm bu bilgileri hata yanıtının faultstring öğesinde bulabilirsiniz. Örneğin, aşağıdaki faultstring içinde JavaScript politika adı ParseDate, JavaScript kaynak dosyası ParseDate.js, hatanın oluştuğu satır numarası 2 ve hata açıklaması Date is invalid'dir:

    "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 belirtilen) 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şkende geçersiz bir tarih 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 görebilirsiniz:

    ParseDate.js

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

    Bu örnekte, satır numarasında 2 kullanılan bir değişken date vardır. Kaynak dosyayı incelediğinizde date değişkeninin geçersiz bir tarihle ayarlandığını görebilirsiniz: 2018-09-31T11:19:08.402Z. Bu tarih, Eylül ayında 31 gün olmadığı için geçersizdir.

    Not: Bu örnekte kullanılan ISO-8601 biçimi: 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ğıdaki gibi Sept 30 2018 olarak ayarlayabilirsiniz:

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

2. örnek: Precision API'lerine 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ı belirleyin. Tüm bu bilgileri hata yanıtının faultstring öğesinde bulabilirsiniz. Örneğin, aşağıdaki faultstring içinde 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.'dır.

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

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

    SetNumberPrecision.js

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

    Bu örnekte, 2. satırda 400 gibi büyük bir değerin kullanıldığına dikkat edin. Hassasiyeti bu kadar çok basamaklı bir sayıya ayarlayamadığı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 kümesi içinde 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 kullanıldığında (referans verildiğinde) veya üzerinde işlem yapıldığında ReferenceError hata türü oluşturulur.

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ımlanmamış 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 içinde JavaScript politikasının adı ComputeTotalPrice, ilgili kaynak dosya ComputeTotalPrice.js, hatanın oluştuğu satır numarası 3 ve tanımlanmamış değişken adı price.'dir.

    "faultstring": "Execution of ComputeTotalPrice failed with error: Javascript runtime error: \"ReferenceError: \"price\" is not defined. (ComputeTotalPrice.js:3)\""
    
  2. JavaScript kaynak dosyasındaki satır numarasını inceleyin ve yukarıdaki 1. adımda tanımlanan tanımsız değişkenin referans verilip verilmediğini doğrulayın. Örneğin, aşağıdaki JavaScript kodu, 3. satırda faultstring'dekiyle eşleşen, tanımlanmamış price değişkenine referans veriyor:

    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. İlgili 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ış/bildirilmemiş price değişkeni kullanıldığından 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ını 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öz dizimi hatası

JavaScript motoru, dilin söz dizimine uymayan jetonlarla veya jeton sırasıyla karşılaştığında ya da JSON/XML ayrıştırma gibi ayrıştırıcı API'lerine geçersiz biçimde giriş yapıldığında SyntaxError hata türü oluşturulur.

Örneğin, geçersiz veya hatalı biçimlendirilmiş JSON yükü, JavaScript politikasında kullanılan JSON.parse API'sine giriş olarak iletilirse 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ı belirleyin. Tüm bu bilgileri hata yanıtının faultstring öğesinde bulabilirsiniz. Örneğin, aşağıdaki faultstring içinde JavaScript politika adı ParseJSONRequest, JavaScript kaynak dosyası ParseJSONRequest.js, hatanın oluştuğu satır numarası 2 ve hata açıklaması Unexpected token'dir:

    "faultstring": "Execution of ParseJSONRequest failed with error: Javascript runtime error: \"SyntaxError: Unexpected token: <. (ParseJSONRequest.js:2)\""
    
  2. JavaScript kaynak dosyasındaki (yukarıdaki 1. adımda tanımlanan) 2. satır numarasını inceleyin ve hangi işlemin yapıldığını kontrol edin. Bir JSON.parse() işlevi yürütülüyorsa kendisine iletilen giriş parametresini kontrol edin. Giriş parametresi geçerli değilse veya JSON biçimi bozuksa hatanın nedeni budur.

    Bu hataya neden olan örnek bir JavaScript kodunu aşağıda bulabilirsiniz:

    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şlevinin girişi olarak kullanılır.

    İsteğin nasıl iletildiğini gösteren örnek API çağrısını aşağıda 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, aşağıdaki XML yükü API proxy'sine iletilir <city>Bangalore</city>. JSON.parse API'si, geçerli bir JSON'un iletilmesini bekler ancak bunun yerine bir XML yükü iletildiğ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ş ilettiğinizden emin olun.

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

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

Tür hatası

TypeError hata türü aşağıdaki durumlarda gösterilir:

  • Bir işleve iletilen bir işlenen veya bağımsız değişken, bu operatör ya da işlevin beklediği türle uyumlu değil.
  • Bir işlev, null, undefined veya yanlış bir nesne üzerinde çağrılıyor.
  • Bir özelliğe null, tanımlanmamış veya yanlış bir nesneden erişiliyor.

Örneğin, tür hatası oluşturulur:

  • Bir sayı üzerinde toUpperCase() işlevini çağırmaya çalışırsanız. Bunun nedeni, toUpperCase() işlevinin yalnızca dize nesnelerinde çağrılabilmesidir.
  • Boş veya tanımlanmamış bir nesneden özellik 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 işlev çağırmaya çalışırsanız bu hatayı alırsınız. Örneğin, toUpperCase() işlevini bir sayı üzerinde çağırmaya çalıştığınızda hata alırsınız. Bunun nedeni, toUpperCase() işlevinin yalnızca dize nesnelerinde çağrılabilmesidir.

Ö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ı belirleyin. Tüm bu bilgileri hata yanıtının faultstring öğesinde bulabilirsiniz. Örneğin, aşağıdaki faultstring içinde JavaScript politika adı ConvertToUpperCase, kaynak dosya ConvertToUpperCase.js, satır numarası 2 ve hata açıklaması **Cannot find function toUpperCase in object 100.'dir.

    "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 nesnede çağırdığınızı gösteriyor.

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

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

    ConvertToUpperCase.js

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

    Yukarıda gösterilen JavaScript kodunda number değişkeni 100 değeriyle ayarlanır. Ardından, sayı nesnesinde toUpperCase()( işlevi çağrılır. toUpperCase() işlevi yalnızca dize nesnelerinde çağrılabildiğinden şu hatayı 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

Her zaman geçerli nesnelerde 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 dizede toUpperCase() işlevini çağırabilirsiniz:

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

2. örnek: Tanımsız bir nesneden özellik okunamıyor

Tanımlanmamış bir nesneden bir özelliğe erişmeye/özellik okumaya çalışırsanız bu hatayı alırsınız. Örneğin, bir dizideki bir nesnenin verilerine erişmeye çalıştığınızda ancak nesne tanımlanmamışsa bu hata oluşabilir. Ayrıntılı açıklamayı aşağıda bulabilirsiniz.

Ö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ı belirleyin. Tüm bu bilgileri hata yanıtının faultstring öğesinde bulabilirsiniz. Örneğin, aşağıdaki faultstring içinde politika adı ParseJSONResponse, kaynak dosya ParseJSONResponse.js, satır numarası 6 ve hata açıklaması Cannot read property "length" from undefined'dir.

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

    Bu hata, length özelliğinin tanımsız bir nesneden okunamadığını gösterir.

  2. JavaScript kaynak dosyasındaki (yukarıdaki 1. adımda tanımlanan) satır numarasını inceleyin ve nesnenin geçerli bir değere sahip olup olmadığını veya tanımlanmamış olup olmadığını doğrulayın. Belirli bir nesnenin nasıl tanımlandığını veya türetildiğini belirlemek ve nesnenin neden tanımlanmamış olarak kabul edildiğini anlamak için kaynak dosyanın tamamını okumanız ve anlamanız gerekebilir. Belirli nesnenin gerçekten tanımlanmamış olduğunu ve bu nesneden length özelliğine erişmeye çalıştığınızı fark ederseniz hatanın nedeni budur.

    Bu sorunu daha iyi anlamak için bir örneğe göz atalım:

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

      {
          "cars": [
             { "name":"Toyota", "count": 150 }
             { "name":"Honda", "count": 100 },
             { "name":"Ford", "count": 75 }
          ]
      }
      
    2. Bu JSON yanıtını ayrıştıran ve yukarıda bahsedilen hataya yol açan örnek bir JavaScript kaynak dosyasını aşağıda bulabilirsiniz:

      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 dikkatlice incelediğinizde 2. satırda response.content değerinin jsonData değişkenine normal bir dize (tırnak içinde) olarak okunduğunu/saklandığını görebilirsiniz.

    4. jsonData normal bir dize olduğundan jsonData içinden cars'ye erişmeye çalıştığınızda (jsonData.cars) tanımlanmamış olur.

    5. Ardından, tanımlanmamış olan jsonData.cars öğesinden 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 JSON nesnesi olarak okuduğunuzdan emin olun.

Yukarıda açıklanan örnek JavaScript'i düzeltmek için JSON.parse() işlevini response.content nesnesinde kullanarak JSON nesnesi olarak alabilirsiniz. Bundan sonra cars dizisine erişebilir ve dizi üzerinde başarılı bir şekilde 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ü oluşturulur. Örneğin, decodeURI veya decodeURIComponent işlevlerine yüzde sembolü içeren bir URI iletirseniz 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ı belirleyin. Tüm bu bilgileri hata yanıtının faultstring öğesinde bulabilirsiniz. Örneğin, aşağıdaki hata dizesinde JavaScript politikasının adı URIDecode</code, JavaScript kaynak dosyasının adı URIDecode.js, satır numarası 2 ve hata açıklaması Malformed URI sequence'dır:

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

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

  2. JavaScript kaynak dosyasını inceleyin ve URI işlevlerinden herhangi birine iletilen bağımsız değişkende geçersiz karakterler olup olmadığını doğrulayın. Evetse hatanın nedeni budur.

    Bu hataya neden olan bir örnek 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, str değişkenine iletilen decodeURIComponent() değişkeninde yasa dışı karakter olarak kabul edilen bir yüzde işareti var. 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 ve izin verilen karakterler olduğundan 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);