Programlama
     Sistem
     Web & Grafik
     Genel Konular
     Yarışma

Ceviz.Net RSS/XML




  Yazarlar 
$babacan
ab
abdagli
acehreli
Akın Öcal
anov
ApexLoader
apranaxfort
ArkHe
arthon
ASA
Asosyal
Barcoder
bronze
bunalthe
burhanmt
C-Nem
CaddeClub
Caesar
callaki
cappytoi
captainzap
Cekici
cemaliozan
civciv
civil
Codder
cubbuk
cumhurkorkut
darky_dark
deathisonitsway
diablo
dkoksal
dreammaker
Dreamy
Emre
esmaeild
Euclides
fatihhood
fgenc
fixman
Fobus
fuzbing
gorgpix
Guardian
HaokaH
hiko
hmustak
hsyn
HunTER
Huzeyfe
IcenGuard
john doe
jtaz
KamilORS
karavanabatu
karflake
kelalaka
kGlz
Magic2Melody
McTeo
Memik Yanık
memphiswoo
merush
Meteryus
Midgard
mkarabulut
Mr_MOON
muharrem_tac
myavruturk
myavuzselim
not:found
oCRaCy
Okan
omerosmanoglu
pan
PaNTHeRa_
ParK
perlci
pirilti
Predator
prf_q
Psychaos
Pwm
Raiden
RaiST
Rapsodi
realist
realmusti
redial
renegade1905
Revlis
roxane
Sahin
Sam Orpheus
Scorpion
SEYRANLI
SGurel
sineld
sinoo
smasherz
Sniper
some_plus
SrcnCkr
tankado
teddmcload
TreeDY
turansoylu
Turok
UmutZafer
uszr
UuuR
vampire
Volkan Uzun
xXx
X_
yaso_19
yesilvadi
yildizib
Zerzevat Adam
Övünç Mete
 

Programlama

:: Ajax? Remote scripting?

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 :-)

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 :



anov 09.12.2007
co.mments  del.icio.us  digg  Furl  NewsVine  Reddit  Spurl  TailRank  Wists   



Rating : 10 üzerinden 7.00
 



Tümünü Göster / Sadece Başlıklar Yorumlar

Viu k
synchronous olan javascripte bir ornek verir misiniz

 

anov Synchronous js örneği
xmlhttp.open() metodunun son parametresini false yaptığımız zaman senkron çağrı yapabiliyoruz. Arama ile şöyle bir örneğe ulaştım.

http://www.gordongridley.us/2006/04/sjax-synchronous-javascript-and-xml.html

Senkron (Synchronous) çağrının farkları:
* Olay tetikleyici çağırmamıza gerek kalmaz.
* Verilen komuttan itibaren, javascriptin çalışmasını o noktada bekletiyor. (Aksi takdirde yeniden o noktada gerçekleşecek olay için oraya bir olay tetikleyicisi bırakmamız ve olayın içine yanıt döndükten sonra neler yapacağını yazmamız gerekirdi.)

 





» Yorum ekle
 
İsminiz:
Mailiniz:
Yorum Konu:
Güvenlik Kodu: güvenlik kodu
Bütün alanları doldurmanız gerekmektedir.


 
Forumda Aktif Olan Son 15 Konu

Designed by Gurdesign
www.gurdesign.com


1  2  3  4  5  6  7  8  9  10  11  12  13  14  15  16  17  18  19  20  21  22  23  24  25  26  27  28  29  30  31  32  33  34  35  36  37  38  39  40  41  42  43  44  45  46  47  48  49  50  51  52  53  54  55  56  57  58  59  60  61  62  63  64  65  66  67  68  69  70  71  72  73  74  75  76  77  78  79  80  81  82  83  84  85  86  87  88  89  90  91  92  93  94  95  96  97  98  99  100  101  102  103  104  105  106  107  108  109  110  111  112  113  114  115  116  117  118  119  120  121  122  123  124  125  126  127  128  129  130  131  132  133  134  135  136  137  138  139  140  141  142  143  144  145  146  147  148  149  150  151  152  153  154  155  156  157  158  159  160  161  162  163  164  165  166  167  168  169  170  171  172  173  174  175  176  177  178  179  180  181  182  183  184  185  186  187  188  189  190  191  192  193  194  195  196  197  198  199  200  201  202  203  204  205  206  207  208  209  210  211  212  213  214  215  216  217  218  219  220  221  222  223  224  225  226  227  228  229  230  231  232  233  234  235  236  237  238  239  240  241  242  243  244  245  246  247  248  249  250  251  252  253  254  255  256  257  258  259  260  261  262  263  264  265  266  267  268  269  270  271  272  273  274  275  276  277  278  279  280  281  282  283  284  285  286  287  288  289  290  291  292  293  294  295  296  297  298  299  300  301  302  303  304  305  306  307  308  309  310  311  312  313  314  315  316  317  318  319  320  321  322  323  324  325  326  327  328  329  330  331  332  333  334  335  336  337  338  339  340  341  342  343  344  345  346  347  348  349  350  351  352  353  354  355  356  357  358  359  360  361  362  363  364  365  366  367  368  369  370  371  372  373  374  375  376  377  378  379  380  381  382  383  384  385  386  387  388  389  390  391  392  393  394  395  396  397  398  399  400  401  402  403  404  405  406  407  408  409  410  411  412  413  414  415  416  417  418  419  420  421  422  423  424  425  426  427  428  429  430  431  432  433  434  435  436  437  438  439  440  441  442  443  444  445  446  447  448  449  450  451  452  453  454  455  456  457  458  459  460  461  462  463  464  465  466  467  468  469  470  471  472  473  474  475  476  477  478  479  480  481  482  483  484  485  486  487  488  489  490  491  492  493  494  495  496  497  498  499  500  501  502  503  504  505  506  507  508  509  510  511  512  513  514  515  516  517  518  519  520  521  522  523  524  525  526  527  528  529  530  531  532  533  534  535  536  537  538  539  540  541  542  543  544  545  546  547  548  549  550  551  552  553  554  555  556  557  558  559  560  561  562  563  564  565  566  567  568  569  570  571  572  573  574  575  576  577  578  579  580  581  582  583  584  585  586  587  588  589  590  591  592  593  594  595  596  597  598  599  600  601  602  603  604  605  606  607  608  609  610