13MayJquery ile ajax’la gelen sayfalarda “.js” kullanımına çözüm !!!

Web dünyasının yeni çocuğu JQUERY ile ajax’la uğraşanların büyük sorunu olan harici yüklenen sayfalarda “.js” kullanımına kendimce bir çözüm ürettim paylaşıyorum.

öncelikle jquery i sayfamıza ekliyoruz nasıl eklendiğini anlatmama gerek yok sanırım :)

function ajaxGetir(hedef,adres){

$(“#”+hedef).ajaxStart(function(){

$(this).html(“<object classid=’clsid:d27cdb6e-ae6d-11cf-96b8-444553540000′ codebase=’http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0′ width=’110′ height=’25′ id=’loading’ align=’middle’><param name=’allowScriptAccess’ value=’sameDomain’ /><param name=’movie’ value=’include/loading.swf’ /><param name=’quality’ value=’high’ /><param name=’wmode’ value=’transparent’ /><param name=’bgcolor’ value=’#ffffff’ /><embed src=’include/loading.swf’ quality=’high’ wmode=’transparent’ bgcolor=’#ffffff’ width=’110′ height=’25′ name=’loading’ align=’middle’ allowScriptAccess=’sameDomain’ type=’application/x-shockwave-flash’ pluginspage=’http://www.macromedia.com/go/getflashplayer’ /></object>”)

});

$.ajax({

type: ‘GET’,

url: adres+”.php”,

success: function(ajaxCevap) {

$(‘#’+hedef).html(ajaxCevap);

$.ajax({type: ‘GET’,cache: false,url: ‘include/’+adres+’.js’,dataType: ‘script’});

},

error: function(nesne, sebep, hata) {

$(“#”+hedef).html(‘<b>Bağlantı sırasında bir sorun oluştu. Lütfen sayfayı yenileyin…</b>’+hata);

}

});

}

burada senaryo şu şeklide:

bir tane ajaxGetir fonsiyonumuz var ve bu fonsiyon parametre olarak “hedef” yani içeriğin yükleneceği alan “adres” harici içeriğimiz.

“adres” ile aynı isimde birde o sayfada kullanılacak javascript kodlarını barındıran “.js” dosyası oluşturuyoruz.daha sonra ilk önce içeriğimizi yüklüyoruz hemen arkasından da ilgili “.js” dosyasını yüklüyoruz.İlgili “.js” dosyasınıda

$(document).ready(function(){});

kodlarıyla çalıştırıyoruz ve sorunsuz bir şekilde çalıştığını görüp hayretler içerisinde kalıp bana teşekkür ediyorsunuz.:)

$(“#”+hedef).ajaxStart(function(){

$(this).html(“<object classid=’clsid:d27cdb6e-ae6d-11cf-96b8-444553540000′ codebase=’http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0′ width=’110′ height=’25′ id=’loading’ align=’middle’><param name=’allowScriptAccess’ value=’sameDomain’ /><param name=’movie’ value=’include/loading.swf’ /><param name=’quality’ value=’high’ /><param name=’wmode’ value=’transparent’ /><param name=’bgcolor’ value=’#ffffff’ /><embed src=’include/loading.swf’ quality=’high’ wmode=’transparent’ bgcolor=’#ffffff’ width=’110′ height=’25′ name=’loading’ align=’middle’ allowScriptAccess=’sameDomain’ type=’application/x-shockwave-flash’ pluginspage=’http://www.macromedia.com/go/getflashplayer’ /></object>”)

});

bu ajaxStart() fonksiyonunu istediğiniz şekilde düzenleyebilirsiniz. Preloader’inizin gösterileceği fonksiyondur ben projemde “.swf” preloader kullanmayı uygun gördüm.

Dipnot: kullanacağınız harici “.js” dosyalrını mümkün olduğunca azaltıp hızlanmasını sağlamanız yararınıza olur. Belki bazı fonksiyonları sayfa ilk yüklendiğinde hazır edip harici “.js” ile tetiklemek daha mantıklı olabilir.

Recent Flickrs

    Blogroll

    Recent Listening