Script.aculo.us ile AJAX
Gece gece canım sıkıldı ve özendim script.aculo.us ile AJAX işlemlerini nasıl yapacağınızı anlatan bir makale yazmak istedi canım.
Bildiğiniz yada şuan öğrendiğiniz üzere AJAX, tarayıcıların XMLHttpRequest nesnesini kullanarak sayfayı yenilemeden, asenkron bir şekilde web sayfalarına istekte bulunmamızı ve onlardan dönen sonuçları ekrana basmamızı sağlayan bir teknoloji..
AJAX artık bir çok web 2.0 projesinde aktif olarak kullanılmaya başlandı hatta işin cıvkını çıkarıp "Ben AJAX kullanmayan uygulama yazamam" diyenler bile vardır eminim. Şahsen ben ajax'ın, gerekli yerlerde ve kullanıcıların işini kolaylaştırmak adına kullanılması taraftarıyım.Fazlası sinir yaratıyor, cildi bozuyor falan..
Script.aculo.us ve AJAX
Aslında script.aculo.us ve ajax başlığı ne derece doğru bilemiyorum. Çünkü scu zaten prototype tabanlı bir js framework'ü olduğundan aslında yaptığımız ajax işlemlerini prototype içerisinde bulunan nesneler ve fonksiyonlar ile yapıyoruz. Neyse konumuz bu değil, konumuz bu tekniği scu ile efektif bir şekilde nasıl kullanabileceğimiz.
Basitçe kullanacağımız kodun nasıl birşey olacağını örnek vermek istersek.
-
new Ajax.Updater('ajax_sonucunda_gelen_icerigin_basilacagi_oge_id', 'icerik_alinacak_olan_dosya.uzantisi', { method : 'post',
-
onSuccess : function() {
-
alert('İşlem başarılı');
-
}
-
});
Fonksiyonu ve kısaca hangi parametrelerin ne işe yaradığını aktaracak olursak. Fonksiyonumuza ilk girdiğimiz değer yani "ajax_sonucunda_gelen_icerigin_basilacagi_oge_id" kısmı içerik almak için istek ( request ) göndermiş olduğumuz sayfadan bize dönen içeriğin, şuanda bulunan sayfa üzerinde nereye basılacağını,ekleneceğini belirtir. Bu öge bir div,span,a olabilir. Yeterki
-
<div id="bunun_idsi"></div>
şeklinde sayfada oluşturulmuş olsun yani xhtml kodlarını yazılırken ögenin id değeri belirtilmiş olsun.
2. parametremiz ise 1. parametrede gördüğümüz içeriğin alınacağı adres. Aşağıdaki örneklerde bu adrese verilerimizi istediğimiz şekilde nasıl göndereceğimizi de göstereceğim.
3. kısım ise aslında tek bir paremetreden oluşmuyor. Bir ayar dizisinden oluşuyor ve bu dizi'ye bir çok eleman eklenebilir. Aslında script.aculo.us ile yapacağımız ajax işlemlerinde bizim için en önemli nokta belki de bu kısımdaki ayarlar. Şimdi bu ayar dizisindeki ögelerden ve ne işe yaradıklarından bahsedeceğim.
evalScripts : Eğer değeri true olarak belirtilirse istek gönderilen dosyada bulunan js kodları çalıştırılır. false olarak belirtilmesi halinde istek gönderilen sayfadaki js kodları çalıştırılmaz. Bu kodların çalışmamaması sorunu, genelde direk olarak herhangi bir kütüphane kullanmaksızın ajax ile veri güncelleyen, bir sayfaya istek gönderen arkadaşlarımızın başına gelir.
method : Yapılacak olan istediğin POST ile mi GET ile mi yapılacağını belirtir. "post" yada "get" yazmalısınız karşısına. Bu özelliği tanımlamazsanız ön tanımlı olarak "post" atanacaktır.
postBody : Yapacağınız ajax isteği ile göndermek isteyeceğiniz veriler olabilir. Burada verileri gönderirken aşağıdaki örnekte olduğu gibi bir kullanımda bulunmalısınız.
-
postBody : 'adi=' + adim_degiskeni + '&soyadi=' + soyadim_degiskeni + '&meslek=ogrenci'
onComplete : AJAX isteği tamamlandığında yapılacak işi belirtir. Kullanımı için aşağıdaki kodu gözlemleyebilirsiniz.
-
new Ajax.Updater('ajax_sonucunda_gelen_icerigin_basilacagi_oge_id', 'icerik_alinacak_olan_dosya.uzantisi', { method : 'post',
-
onComplete : function(t) {
-
alert(t.responseText);
-
}
-
});
Makale boyunca örneklerimizi Ajax.Updater nesnesi ile yaptık ancak Prototype ile AJAX işlemleri yapabilmek için kullanabileceğimiz tek fonksiyon Ajax.Updater değil. Biraz daha özel ihtiyaçlarımız için Ajax.Request'i kullanabiliriz. Ajax.Request'in Ajax.Updater'dan temel farkı sunucuya asenkron olarak istek (request) gönderdikten sonra, dönen sonuç ile yapılacak işlemi bize bırakması. Yani Ajax.Updater'de olduğu gibi sayfamızda bulunan bir alanı güncellemekten daha farklı işlevler içinde kullanılabilir. Kullanımı ise aşağıdaki kodda gördüğünüz gibi.
-
new Ajax.Request('icerik_alinacak_olan_dosya.uzantisi',{
-
method : 'post',
-
postBody : 'ad=gurkan&soyad=oluc',
-
onComplete : function(t) {
-
alert(t.responseText);
-
}
-
})
Nasıl? Ajax.Updater'a benziyor değil mi? Ancak bir farkı var son verdiğim örnekten bir önceki örnekte Aynı işlemi Ajax.Updater ile yaptırdığımda sunucudan gelen içerik önce uyarı olarak ekrana verilecek, daha sonra nesneyi kullanırken belirtmiş olduğum öge güncellenecek. Ancak Ajax.Request kullandığımda sunucudan gelen cevap yalnızca uyarı olarak sayfaya aktarılacak ve biz uyarıyı kapatınca daha başka bir olay olmayacak.
Prototype'ın AJAX işlemleri yapmak için gerekli fonksiyonlarını anlattıktan sonra şimdi sıra elle tutulur bir örnek yapmaya geldi. Örneğimizde biz sayfamız üzerinde bulunan kutuya bir ifade yazacağız ve MD5 butonuna tıkladığımızda AJAX ile kutuya yazmış olduğumuz ifadeyi sunucuya iletip, onun MD5 olarak şifrelenmiş halini sayfamıza yansıtacağız. Örneğin çalışan haline buradan ulaşabilir, dosyalarını ise buradan indirebilirsiniz.
Benim şimdilik verebileceklerim bu kadar prototype'ın ajax fonksiyonları ile ilgili bilgiyi bu adresten yani script.aculo.us wiki'sinden alabilirsiniz. Bu sayfayı herkese tavsiye ederim eğer script.aculo.us ile ilgilenecekseniz. İçerisinde prototype'a ait ve bence prototype manual'den daha yararlı dökümanlar bulunduruyor.
Not : Bu makale tam olarak bitmemiştir. Üzerinde yapılacak olan düzeltmeler, eklemeler, çıkarmalar olasıdır.
Ailecek ajax’cı olduk. Ajax = web 2.0 diyebilirmiyiz?
@eylos : Bence diyemeyiz çünkü her web 2.0 uygulaması AJAX tekniğini kullanacak diye bir yok. AJAX, web 2.0′ın temelinde yatan kullanıcı tarafından oluşturulan içerik kısmında bu içeriğin oluşturulmasını kolaylaştıran, daha sevimli hale getiren bir tekniktir bence
yazınız için teşekkürler.az biraz anladım mantığı ancak bu konuyu birkaç örnekle destekleseydiniz daha iyi olurdu.
bir de asp de ajax.xml request nesnesi kullanılırken türkçe karakter hatası veriyor.forumlarda çok tartışıldı bu konu.çözümü ile ilgili bilgin var mı?
@sinan : Örnekleri büyük bir ihtimal ile bu gece ekliyeceğim. ASP ile kullanımda oluşan karakter hatası konusunda maalesef bilgi sahibi değilim çünkü yaklaşık 2 senedir ne asp kodu yazıyorum nede asp kodu yazıyorum
Ancak sayfa header bilgilerinde karakter kodlaması olarak utf-8 belirtilirse düzeleceğini sanıyorum.
yazı içi teşekkürler, jquery ile yapmıştım bunları. sanki jquery ile daha kolay oluyor..
@Hüseyin : Önemli değil, devamı gelecek
Bende script.aculo.us ve mootools ile yapmayı seviyorum nedense ama kafama eserse jquery ilede yaparım 
sanırım tamamen tercih meselesi. sanırım aralarında pek fark yok ama kime hangisi iyi geliyorsa ona göre o iyi oluyor.. neyse ben jquery ile devam ediyorum
Yorum Yapın
Arayan Bulur
Sayfalar
Twitter - twitter.com/grkn
2 gün twit yapamayabilirim. arkadaşlarda kalıcazzzzz
yaklaşık 2 saat önceyoutube engelli mi? değil mi? ben anlamadım ki. bir açılıyor, bir açılmıyor!
yaklaşık 3 saat önceyatalım artık. yarın baya uzun bir gün olacak.
yaklaşık 12 saat önce@alibabaoglan how was concert? do you like hayko cepkin's show and his energy?
yaklaşık 13 saat öncemakalemi yazdım. duş time
yaklaşık 16 saat öncekategoriler
Destek & Köstek
Yeni düşenler
Arşivler
Linkler
Etiketler
İnternet Ajax Benim Dünyam Bilgisayar Blogroll CSS Eleştiri Firefox Günlük Genel google Haber Hayat Kategorilenmemiş Kitap Komedi Müzik Makale Makaleler Mim PHP Proje Sinema Tanıtım Web 2.0 Web Geliştirme WordPress Wordpress Eklentisi Yaşam Yazılımlar
Sosyal Mevzular