jQuery içerisinden kimi nedenlerden dolayı harici javascript dökümanları ve bu dökümanlar 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() metodu Ajax yapısı ile de benzer şekilde tercih edilebilir. Not olarak eklemekte fayda var, ajax() yapısal olarak getScript() metoduna kıyasla daha esnek bir kullanım imkanı sunmaktadır.

$.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() metodu ç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.

Leave a Reply

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir