AJAX request

Bu yazıda, AJAX XMLHttpRequest'lerine (XHR) değinilecektir. XHR ile ilgili yanlış algılamalara, XHR'da Javascript kodlarının neden çalışmadığı ve çalışması için neler yapılabileceğine değinilecektir.

IFRAME'lerin yaptığı request'ler gerçek bir request'tir. Bu sayede, çağrılan sayfadaki Javascript'leri çalıştırabilir, fonksiyonları sayfanızda kullanabilirsiniz. Fakat, AJAX request'leri (XHR) böyle değildir. Sayfadaki Javascript kodları çalışmaz. Çünkü, XHR'dan dönen içerik bir text olarak algılanır, Javascript'ler çalışmaz. XHR sayfa çağırmak için tasarlanmamıştır. BODY, SCRIPT gibi etiketler içermemelidir. Eğer içerikteki Javascript'ler sizin için önemliyse, bunu kendi başınıza halletmek zorundasınız. Yüzlerce satır kod yazmaya hazır olmalısınız. Birkaç Javascript kütüphanesi bu konuda yardımcı olmak için hazır özellikler sunar. Konuyla ilgili olarak Spry ve Ext kütüphaneleri aşağıda karşılaştırılmaktadır.

Spry

http://labs.adobe.com/technologies/spry/samples/htmlpanel/html_panel_two.html sayfasında anlatılan "evalScripts" özelliği kullanılarak, XHR'dan dönen içerikteki Javascript kodlarınızın ir defaya mahsus çalıştırabilirsiniz (request esnasında). Fakat, maalesef XHR içeriğinizdeki Javascript fonksiyonlarınızı sayfanızda kullanamazsınız.

Ext

XHR içerikteki Javascript kodlarınızı çalıştırabilir ve fonksiyonları sayfanızda kullanabilirsiniz. Ayrıntılı bilgiye http://extjs.com/deploy/dev/docs/?class=Ext.Updater adresinden ulaşılabilir.XHR içeriğindeki Javascript kodları konusunda dünyanın en iyi kütüphanesi Ext'tir. Esnek yapısı sayesinde IE'nin eval bug sorununun üzerinden atlayabilir ve ColdFusion CFFORM içeren sayfalarını bile XHR ile çağırıp kullanabilirsiniz. Ext geliştirici takımının Workcube için hazırladığı söz konusu work around'a http://extjs.com/forum/showthread.php?t=15629&page=3 adresinden ulaşılabilir.

0 yorum:

Diğer Yazılar