jQuery.getScript()

Güncelleme Yayın

jQuery içerisinden kimi nedenlerden dolayı harici JavaScript dosyaları ve bu dosyalar içerisinden fonksiyonlar çağırmamız gerekebilmekte. Sayfa içerisine doğrudan eklenmemiş, gerekli olduğu durumlar için çağırılacak dosyalarda jQuery.getScript() kullanarak işlemler yapabilmekteyiz. Bu sayede getScript() ile aynı zamanda dosyaların doğru bir şekilde entegre edilip edilmediğini de kontrol etme imkanımız olmakta.

$.getScript("test.js",function(){
    console.log("Harici dosyası hatasız yüklendi.");
});

jQuery.getScript()

GET HTTP request ile dosyayı yükleyip çalıştıran getScript() metotu Ajax yapısı ile de benzer şekilde tercih edilebilir. Not olarak eklemekte fayda var, ajax() yapısal olarak getScript() metotuna1 kıyasla daha esnek bir kullanım imkanı sunmaktadır2.

$.ajax({
  url: "test.js",
  dataType: "script",
  success: function(){
        console.log("Harici dosyası hatasız yüklendi.");
    }
});

Tekrar getScript() örneği üzerinden ilerleyecek olursak yükleme durumuna göre şu şekilde süreci takip edebiliriz.

$.getScript("test.js")
  .done(function( script, textStatus ) {
    console.log("Harici dosyası hatasız yüklendi.");
  })
  .fail(function( jqxhr, settings, exception ) {
    console.log("Harici dosya yüklenemedi!");
});

Yukarıdaki kod bloklarında test.js dosyasının yolu/adı yanlış belirtilirse ya da dosya bir nedenden dolayı erişilemez durumdaysa hata yönetimi çerçevesinde işleyişi yönlendirme imkanına sahip olmaktayız.

$.ajaxSetup({
  cache: true
});

Ön tanımlı olarak getScript() cache için false tanımlı olarak işlemektedir ve her talepte dosya uzantısına bir zaman damgası işlenir. Gereksinim durumunda global olarak cache tanımlamasını ajaxSetup üzerinden gerçekleştirebiliriz. ajax() metotu çerçevesinde ise;

jQuery.cachedJS = function( url, options ) {
  options = $.extend( options || {}, {
    dataType: "script",
    cache: true,
    url: url,
    success: function(){
      alert("başarılı");
    }
  });
  return jQuery.ajax( options );
};
$.cachedJS("test.js");

Alternatif bir yöntem olarak cache kullanımını yukarıdaki şekilde sağlayabiliriz.