Ajax? Remote scripting?

Popüler olması sebebiyle ajax a kafayı takmış vaziyetteyiz, o yüzden biraz irdeleyelim, içini dışını anlayalım istiyorum.Bu günkü yazımızda size remote scripting i anlatmayı planlıyorum, remote scripting, bir html sayfasının yeniden yüklenmesine gerek kalmadan yayınlandığı sunucu ile (evet sadece yayınlandığı sunucu ile, bu kısıtlama güvenlik sebebiyle konulmuştur, ama aşılabilir.) iletişimini sağlayan kodlama kalıplarıdır.

Google ajax ın reklamını yapmadan çok önce de ajax denilen şey remote scripting adı altında yapılıyordu, ama ne zaman ajax meydana çıktı javascript in yıldızı parladı, sinir bozucu java – javascript ayırt edememezliğinin yanına bir de ajax ile dhtml ayırt edememezliği çıktı.

Bildiğim kadarıyla size remote scripting in (rs, ajax ı kapsar bu yüzden ondan bahsedeceğim) tarihçesini kendi bakış açımdan anlatayım:

  • Remote scripting ile ilk tanışmam www.yazgelistir.com dan bir arkadaşın sadece ie 5.5+ da geçerli olan <xml> elementiyle sunucu ile iletişim kurmasıyla başlar. (Şu an o site üzerindeki aramalarım ne yazık ki bir sonuç vermedi, yazıyı yazanın ismini burada anmayı ve yazıya link vermeyi çok isterdim rastlayan biri varsa veya o yazının yazarı şu an bunu okuyorsa bana bildirebilir, o yazı zamanının çok ilerisinde bir yazı idi çünkü) 
  • 29 Aralık 2007 Cumartesi Eklemesi : Sonunda yazıyı yazanı hatırlayabildim, bu yazının yazarı Turgut Haspolat ve yazısının bir örneğine de şurada rastladım : http://www.aspnedir.com/Article/DisplayArticle.aspx?ID=755
  • O tarihlerde .net 1.0 dan 1.1 e yeni yeni geçiyordu, asp.net sayfalarında SmartNavigation diye bir özellik vardı peki ne yapardı bu SmartNavigation? kendine özgü bir js kodu ile sayfanın içinde bir IFRAME elementi oluşturur ve sayfanın içine ekler, request i o iframe içinden yapar ve dönen yanıtı (IFRAME elementinin outerHTML özelliği) o IFRAME i içeren sayfaya (normal sayfamız) yansıtırdı, böylece sayfanın postback işlemi anlaşılmazdı. Ama bu özellik sadece IE ailesiyle çalışıyor, çünkü outerHTML standart bir özellik değil.
  • Microsoft.XMLHTTP ve Msxml2.XMLHTTP2 vardı ama tüm tarayıcılarla çalışmadığı için popüler değildi. Açıkcası Mozilla, Mozilla Firefox olana kadar bu nesnelerden haberi olan kişi sayısı az idi.
  • Sanıyorum XmlHttpRequest nesnesine ilk desteğini veren tarayıcı Safari idi, yanılıyorsam düzeltin ama onunla ilgili ilk dökümanlara apple sitesinde rastlamıştım.
  • Firefox 1 in yaygınlaşması ve google ın gmail hizmetinde bu nesneleri kademeli olarak kullanması ayrıca "google suggest" adını verdiği daha aradığımız şeyi arama kutusuna yazarken sonuçların "ajax" ile sorgulanması ve hemen metin kutusunun altındaki bir (layer, div) içinde gösterilmesi söz konusuydu. Eh google bunu javascript (hem de anlaşılmaz yapmaya çalıştıkları bir javascript) ile yapınca herkes bunu merak edip sağda-solda bloglarda decode edebildiği ve mantığını anlatabildiği kadarını, yayınlamaya başladı.
  • Sonra şu kalıp (ki sanırım çoğu ajax kütüphanesinin temel kalıplarından biridir.)  http://jibbering.com/2002/4/xmlhttp.js
  • Daha çok php programcılarının kullandığına şahit olduğum sajax, xajax gibi kütüphaneler.

  • Atlas ın geliştirilmesine başlandı (şimdiki adıyla asp.net ajax)
  • Anthem ile tanıştık. ajaxpro, anthem gibi üçüncü parti kütüphaneler (ki anthem kendi içinde dosya upload ederken iframe kullanmaktadır) gördük.

Gerek cevizde gerekse diğer yerli ve yabancı sitelerde çokca rastladığım bir hataya, ajax ile javascript ayrımınının yapılamamasına karşılık, şimdi bir çizgi çizmek gereklidir diye düşünüyorum bu çizgi ajax denilen şeyin sadece sunucudan veri alınan durumlar için geçerli olduğunu savunduğumdur. Gelin örnek iskelet kod üzerinde birlikte inceleme yapalım.

Örnek iskelet kod olarak şunu kullanacağım : http://forum.ceviz.net/showthread.php?t=17334

Üye olmayanlar kodu şuradan indirebilirler (aslına sadık kalmak için içindeki saçma sapan açıklamaları silmiyorum)
http://www.ceviz.net/ceviz_main/uploads/uye7346/xmlhttp.zip

var xmlhttp = new_xmlhttp();/**alacaklı haciz koymuş bekire of offf*/

Bu kod xmlhttp nesnesini kurar. Nesne öncelikle Msxml2.xmlhttp ve microsoft.xmlhttp nesnelerine kurulmaya çalışır, eğer kullanıcı ie çalışmıyorsa bu kısımları atlayıp en sondaki XMLHttpRequest oluşturulup bu nesneye atanacaktır.

xmlhttp.open("POST","post.asp",true);

Geriye hangi nesne dönerse dönsün bu nesnelerin gerçekleştirdiği arayüz aynıdır. Aynı metot ve özelliklere sahiptirler. Bu satırda kullandığımız metot, "open" ve ilk parametresinde o nesne vasıtasıyla çağıracağımız dosyayı hangi fiil ile çağıracağımızı belirtiyoruz. Bu örnekte POST kullandık, asp de POST un karşılığı post ile gönderilen verilerin alış şekli Request.Form ile olmaktadır, eğer GET kullansaydık, Request.QueryString ile alacaktık. İkinci parametre yanıt döndürecek olan sayfanın ismidir.

Üçüncü parametre bu nesneyi kullanış biçimimizin asenkron (eş zamanlı olmayan) olup olmayacağını belirler. Ne işe yarar eşzamanlılık? Eş zamanlı olmayan kod, bir çeşit thread gibi, değişik bir kapsamda çalışır ve event tetikler (işini bitirdiği zaman) ama eş zamanlı kod, yanıt döndürene kadar scriptin çalışmasını bekletir ve scriptin donmuş hissi vermesine yol açar.

(Asynchronous javascript and xml) deki A harfine karşılık gelir, anlayacağınız ajax ın a sıdır icon smile Ajax? Remote scripting? programlama

Neyse konuya dönelim, aradaki iki satırı atlayıp dikkatinizi

xmlhttp.onreadystatechange

Satırına çekmek istiyorum bu bir olay tutacağımı desem olay yönetici mi desem, ingilizcede "event handler" denilen nesnedir işte. Asenkron olan xmlhttprequest nesnesi her durum değiştirdiğinde (siz onu yolladıktan sonra dökümandan dönen yanıta göre status bayrağı değişir. 200 kodu OK anlamında olduğundan yanıtın döndüğünü anlayıp, işlemlerimizi yapıyoruz.

Kaynakça :

Benzer Konular:

  • Simply Ajax JS Library AJAX (İngilizce:Asynchronous JavaScript and XML), İnternet sayfalarında JavaScript ve XMLHttpRequest kullanımı ile etkileşimli uygulamalar yaratan tekniğin adıdır.Birçok site bu tekniği...
  • Ajax uygulamalarında Türkçe karakter sorunu Ajax uygulamalarında Türkçe karakter sorunun çözümü için çoğumuz arayış içerisine girmişizdir. Bu sorunun çözüm yollarını kısaca burada açıklamaya çalışacağım. Ajax...
  • Ajax Ve Php ile Tab tuşuyla Sorgu Yaparak Form Kontrol ! Öncelikle Herkese Merhabalar . . . Sizlere Bu yazımda Ajax Ve Php Kullanarak Form Kontrolu Yapmayı anlatacagım.web 2.0 ‘ ın...
Yazar - 09 Aralık 2007. Kategori PROGRAMLAMA. Bu yazıya yazılan yazıları RSS üzerinden takip edebilirsiniz RSS 2.0. Yorum yazabilir veya geri izlemede bulunabilirsiniz.

1 için yapılan yorum sayısı

  1. synchronous olan javascripte bir ornek verir misiniz

Bir Cevap Yazın

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

*

Şu HTML etiketlerini ve özelliklerini kullanabilirsiniz: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>