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:

Hatanın Türü Neden
Aralık Hatası Yasal değerler aralığı dışında bir sayı kullanırsanız RangeError döndürülür.
Referans Hatası Tanımlanmamış bir değişken kullanırsanız (referans) bir ReferenceError hatası verilir.
Söz dizimi hatası Söz dizimi hatası olan kodu değerlendirmeye çalışırsanız SyntaxError hata mesajı alırsınız.
Tür Hatası Beklenen tür aralığının dışında bir işlem kullanırsanız TypeError bildirilir.
URI Hatası URI işlevinde geçersiz karakterler kullanırsanız URIError döndürülür.

Aralık hatası

Bir değer üzerinde işlem yaptığınızda veya izin verilen değerler kümesinde veya aralığında olmayan bir işleve değer aktardığınızda RangeError hata türü verilir.

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

  1. Date API'lerin bazılarıyla 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 geçirdiğinizi varsayalım. Bu durumda bir aralık hatası alı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 hata mesajının tamına bağlıdır. Aşağıda referans olarak kullanabileceğiniz birkaç örnek açıklanmaktadı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 politikasında JavaScript politikasının adı ParseDate, JavaScript kaynak dosyası ParseDate.js, hatanın oluştuğu satır numarası 2 ve hata açıklaması Date is invalid'dır:

    "faultstring": "Execution of ParseDate failed with error: Javascript runtime error: \"RangeError: Date is invalid. (ParseDate.js:2)\""
    
  2. JavaScript kaynak dosyasını inceleyin (yukarıdaki 1. adımda tanımlanır) 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 geçersiz bir tarih olup olmadığını kontrol edin. Geçersiz bir tarih kullanılmışsa hatanın nedeni budur.

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

    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ı görebilirsiniz: 2018-09-31T11:19:08.402Z. Eylül ayında 31 gün olmadığı için 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 olarak ayarlayabilirsiniz:

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

2. Örnek: Hassasiyet API'lerine geçersiz sayı iletilme

Ö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ı tanımlayın. Tüm bu bilgileri, hata yanıtının faultstring öğesinde bulabilirsiniz. Örneğin, aşağıdaki faultstring politikasında JavaScript politikasının 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). Hata açıklaması bölümünde belirtilen büyük sayı, ilgili satır numarasında kullanılıyorsa hatanın nedeni budur.

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

    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. Kesinlik düzeyini bu kadar çok sayıda basamak olarak 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 grubunda 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 (başvurulan) veya çalıştırıldığında ReferenceError hata türü verilir.

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ı tanımlayın. Tüm bu bilgileri, hata yanıtının faultstring öğesinde bulabilirsiniz. Örneğin, aşağıdaki faultstring politikasında JavaScript politikasının adı ComputeTotalPrice, karşılık gelen kaynak dosyası ComputeTotalPrice.js, hatanın oluştuğu satır numarası 3 ve tanımlanmamış değişken adı price.'dır.

    "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ımlanmamış değişkene referans verildiğini doğrulayın. Örneğin, aşağıdaki JavaScript kodu 3. satırdaki tanımlanmamış price değişkenine başvuruda bulunmaktadır ve bu değişken, hata dizesindeki değerle eşleşir:

    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 bir değişkenin JavaScript kodu içinde tanımlanıp tanımlanmadığını kontrol edin. Değişken tanımlı değilse hatanın nedeni budur.

    Yukarıda gösterilen örnek komut dosyasında bildirilmemiş/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 başvurulan tüm değişkenlerin doğru bir şekilde tanımlandığından emin olun.

Yukarıda gösterilen örnek JavaScript ile ilgili sorunu düzeltmek için, kullanmadan önce değişken fiyatını 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, dilin söz dizimine uygun olmayan jetonlar veya jeton sırası ile karşılaştığında ya da JSON/XML ayrıştırması gibi ayrıştırıcı API'lerine geçersiz bir biçim girişi geçirildiğinde SyntaxError hata türü verilir.

Örneğin, geçersiz veya bozuk JSON yükü JavaScript politikasında kullanılan JSON.parse API'ye 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 politikasında JavaScript politikasının adı ParseJSONRequest, JavaScript kaynak dosyası ParseJSONRequest.js, hatanın oluştuğu satır numarası 2 ve hata açıklaması Unexpected token'dır:

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

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

    Aşağıda, isteğin nasıl iletildiğini gösteren örnek API çağrısı verilmiştir:

    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ü <city>Bangalore</city> API Proxy'sine iletilir. JSON.parse API, geçerli bir JSON iletilmesini bekler ancak bunun yerine XML yükü iletildiği için aşağıdaki hatayı vererek 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şi ilettiğ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 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ü şu durumlarda gönderilir:

  • Bir işleve geçirilen işlem gören veya bağımsız değişken, söz konusu operatörün veya işlevin beklediği türle uyumlu değil.
  • Bir işlev boş, tanımlanmamış veya yanlış bir nesnede çağrılır.
  • Bir mülke boş, tanımlanmamış veya yanlış bir nesneden erişiliyor.

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

  • 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 bir özelliği 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: Bir işlevi yanlış nesnede çağırma

Desteklenmeyen bir nesnede bir işlev çağırmaya çalışırsanız bu hatayı alırsınız. Örneğin, bir numarada toUpperCase() işlevini çağırmaya çalışırsanız hata alırsınız. Bunun nedeni, toUpperCase() işlevinin yalnızca dize nesneleri üzerinde ç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ı tanımlayın. Tüm bu bilgileri, hata yanıtının faultstring öğesinde bulabilirsiniz. Örneğin, aşağıdaki faultstring politikasında JavaScript politikasının 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ı, sayısal değeri 100 olan bir nesnede toUpperCase() işlevini çağırdığınızı gösteriyor.

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

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

    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. Daha sonra, toUpperCase()( işlevi sayı nesnesinde çağrılır. toUpperCase() işlevi yalnızca dize nesnelerinde çağrılabileceği için ş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

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

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

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

Örnek 2: Tanımlanmamış bir nesnenin özelliği okunamıyor

Tanımlanmamış bir nesneden bir özelliğe erişmeye veya özelliği okumaya çalışırsanız bu hatayı alırsınız. Örneğin, bir dizideki nesneden verilere erişmeye çalıştığınızda ancak nesne tanımlanmadığında bu hata ortaya çıkabilir. Aşağıdaki ayrıntılı açıklamayı inceleyin.

Ö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 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)\""
    

    Hata, length özelliğinin tanımlanmamış bir nesneden okunamayacağını belirtir.

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

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

    1. Arka uç sunucudan 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. Aşağıda, bu JSON yanıtını ayrıştıran ve yukarıda bahsedilen hataya yol açan örnek bir JavaScript kaynak dosyası verilmiştir:

      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 normal bir dize (tırnak içinde) olarak jsonData değişkenine okundu/depolandı.

    4. jsonData normal bir dize olduğundan, jsonData öğesinden cars öğesine erişmeye çalıştığınızda (jsonData.cars) tanımsız olur.

    5. Ardından, jsonData.cars öğesinden length özelliğini okumaya çalıştığınızda (tanımlanmamış) ş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

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

Yukarıda açıklanan örnek JavaScript'i düzeltmek için response.content nesnesinde JSON.parse() işlevini kullanarak bunu bir JSON nesnesi olarak alabilirsiniz. Bunun ardından cars dizisine erişebilir ve dizide başarılı bir şekilde iterasyon 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ü verilir. Örneğin, decodeURI veya decodeURIComponent işlevlerine yüzde simgesi 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ı tanımlayın. Tüm bu bilgileri, hata yanıtının hata dizesi öğesinde bulabilirsiniz. Örneğin, aşağıdaki hata dizesinde JavaScript politikasının adı URIDecode</code, JavaScript kaynak dosyası URIDecode.js, satır numarası 2 ve hata açıklaması Malformed URI sequence şeklindedir:

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

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

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

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

    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üne sahiptir. 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);