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:
Daha çok php programcılarının kullandığına şahit olduğum sajax, xajax gibi kütüphaneler.
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
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 :
http://www.sitepoint.com/forums/showthread.php?p=1618991#post1618991
Benzer Konular:
synchronous olan javascripte bir ornek verir misiniz