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

Apigee Edge belgelerini görüntülüyorsunuz.
Apigee X belgelerine gidin.
info

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ı nedenler

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

Hata Türü Neden
Aralık Hatası Geçerli değerler aralığının dışında bir sayı kullanırsanız RangeError hatası oluşur.
Referans Hatası Beyan edilmemiş bir değişkeni kullanırsanız (referans verirseniz) ReferenceError hatası oluşur.
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ı oluşur.
URI Hatası URI işlevinde yasa dışı karakterler kullanırsanız URIError hatası oluşur.

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. Tarih API'lerinden bazılarında 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 gönderirseniz. Örneğin, Number.toPrecision() yöntemine 400 veya 500 gibi büyük bir değer gönderdiğ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 bildirilen tam hata mesajına bağlıdır. Referans olarak kullanabileceğiniz birkaç örnek aşağıda 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ı belirtin. Bu bilgilerin tümünü 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 belirtilmiştir) 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. Hatanın nedeni geçersiz bir tarih kullanılmasıdır.

    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ılmaktadı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ı 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 Date 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 numara aktarıldı

Ö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 politikası 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.'dir.

    "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 tanımlanmıştır) inceleyin. Hata açıklamasının bir parçası olarak belirtilen büyük sayı, belirli satır numarasında kullanılıyorsa hatanın nedeni budur.

    Bu hataya neden olan örnek bir JavaScript kaynak dosyası aşağıda 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 değeriyle büyük bir değer kullanıldığına dikkat edin. Kesinliği bu kadar çok basamağa ayarlayamadığınızda 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'deki sorunu düzeltmek için anlamlı sayı 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 (atıfta bulunulduğunda) veya üzerinde işlem yapıldığında ReferenceError hata türü atılır.

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. Bu bilgilerin tümünü hata yanıtının faultstring öğesinde bulabilirsiniz. Örneğin, aşağıdaki faultstring öğesinde JavaScript politikası adı ComputeTotalPrice, ilgili kaynak dosya ComputeTotalPrice.js, hatanın oluştuğu satır numarası 3 ve tanımlanmamış değişken adı price.'tir.

    "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 bir 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, bildirilmemiş/tanımlı price değişkeni kullanılmıştır; dolayısıyla, 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, dilin söz dizimine uymayan jetonlar veya jeton sırası ile karşılaştığında ya da ayrıştırıcı API'lerine JSON/XML ayrıştırma gibi geçersiz bir biçim girişi iletildiğinde SyntaxError hata türü atılır.

Örneğin, geçersiz veya bozuk biçimli JSON yükü, JavaScript politikasında kullanılan JSON.parse API'ye 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ı tanımlayın. Bu bilgilerin tümünü hata yanıtının faultstring öğesinde bulabilirsiniz. Örneğin, aşağıdaki faultstring öğesinde JavaScript politikası adı ParseJSONRequest, JavaScript kaynak dosyası ParseJSONRequest.js, hatanın oluştuğu satır numarası 2 ve hata açıklaması Unexpected token'tir:

    "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 kendisine iletilen giriş parametresini kontrol edin. Giriş parametresi geçerli değilse veya hatalı biçimlendirilmiş JSON ise hata bununla ilgilidir.

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

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

    Bu örnekte, API Proxy'ye 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, API Proxy'sine <city>Bangalore</city> aşağıdaki XML yükü iletilir. 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 iletilen operand veya bağımsız değişken, söz konusu operatör veya işlev tarafından beklenen türle uyumlu değil.
  • Bir işlev, null, tanımlanmamış veya yanlış bir nesnede çağrılır.
  • 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 Bunun nedeni, toUpperCase() işlevinin yalnızca dize nesnelerinde çağrılabilmesidir.
  • Boş veya tanımlanmamış bir nesnenin özelliğini 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, bir sayı üzerinde toUpperCase() işlevini çağırmaya çalışırsanız hatayı 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ı belirtin. Tüm bu bilgileri, hata yanıtının faultstring öğesinde bulabilirsiniz. Örneğin, aşağıdaki faultstring'te JavaScript politikası adı ConvertToUpperCase, kaynak dosya ConvertToUpperCase.js, satır numarası 2 ve hata açıklaması **Cannot find function toUpperCase in object 100.'tir.

    "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österir.

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

    Bu hataya neden olan örnek bir JavaScript kaynak dosyası aşağıda 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. Ardından, number nesnesinde toUpperCase()( işlevi ç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 bir dize değişkeni oluşturabilir ve ardından bir dize üzerinde toUpperCase() işlevini çağırabilirsiniz:

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

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

Tanımlanmamış bir nesnenin özelliğine erişmeye/bu özelliği okumaya çalışırsanız bu hatayı alırsınız. Örneğin, bu hata bir dizideki nesneye ait verilere erişmeye çalıştığınızda ve nesne tanımlanmadığında 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ı belirtin. Bu bilgilerin tümünü hata yanıtının faultstring öğesinde bulabilirsiniz. Örneğin, aşağıdaki faultstring öğesinde politika adı ParseJSONResponse, kaynak dosya ParseJSONResponse.js, satır numarası 6 ve hata açıklaması Cannot read property "length" from undefined'tir.

    "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 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ımlanmadığını tespit ederseniz ve bu nesneden mülk uzunluğuna erişmeye çalışıyorsanı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. Bu JSON yanıtını ayrıştıran ve yukarıda belirtilen hataya neden olan örnek bir JavaScript kaynak dosyası aşağıda 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 dikkatlice incelediğinizde 2. satırda response.content değerinin normal bir dize olarak (tırnak içinde) jsonData değişkenine okunduğunu/saklandığını görebilirsiniz.

    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

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 JSON nesnesi olarak alabilirsiniz. Bunun ardından cars dizisine erişebilir ve 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ı

URI işlevinde yasa dışı karakterler kullanırsanız URIError hata türü atılır. Örneğin, decodeURI veya decodeURIComponent işlevlerine yüzde sembolü içeren bir URI gönderirseniz 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 faultstring öğesinde bulabilirsiniz. Örneğin, aşağıdaki hata dizesinde JavaScript politikası adı URIDecode</code, JavaScript kaynak dosyası 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 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 karakterler içerip içermediğini doğrulayın. Cevabınız evet ise hatanın nedeni budur.

    Bu hataya neden olan örnek bir JavaScript kaynak dosyası aşağıda 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() değişkenine iletilen str değişkeninde yasa dışı bir karakter olarak kabul edilen bir yüzde sembolü vardır. Bu nedenle aşağıdaki 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 bunlara izin verildiğinden emin olun.

Yukarıda açıklanan örnek JavaScript'teki 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);