Ajax Nedir? Ajaxı Oluşturan Bileşenler Nelerdir?
İçindekiler
- --son-kullan?c?-ekran?na-yans?t?lan-tüm-elemanlara,-yine-dom-ya-da-statik-olarak-atanabilen-komutlarla--attach&detachevent,-onclick="",-onkeyup=""--ça?r?lan-fonksiyonlar-ile-ya-da-di?er-ba?ka-fonksiyonlar-ile,-sunucu-tarafl?-veya-statik-olarak-haz?rlanm??--asp,-php,-xml-vs.--ta??y?c?-rolündeki-dosyalara-sorgu-gönderilmesi-ve-xml-ya-da-text-olarak-al?nan-verilerin-dom-arac?l???yla-yine-kullan?c?-ekran?na-ya-da-i?lemlere-yans?t?lmas?d?r.-tüm-bu-süreç-içerisinde-yeni-bir-url-yüklenmez,-fakat-istemcinin-ya-da-beti?in-komutu-yerine-getirilmi?-olur.3.-yap?ta?lar?gördü?ünüz-üzere-belirtti?imiz-süreç-içerisinde-en-az-üç-ayr?-scripting-dili-kullan?lmaktad?r.-e?er-sonuç-göze-de-hitap-etsin-ve-standartlar?m?z?-koruyal?m-derseniz-bunlara-css-ve-xhtml'yi-de-ekleyebiliriz.1.-javascript,2.-asp,-php-ve-di?erleri-(!)--atlanabilir-,3.-xml. ajax?n-temelinde-xmlhttprequest-nesnesi-yer-al?r.-ajax-uygulamalar?na-tak?lan-"masaüstü-web-uygulamalar?"--ki-bunu-yabanc?-makalelerde-pek-göremezsiniz--lakab?n?n-s?rr?-da,-bu-nesnede-gizlidir.-xmlhttprequest-nesnesi-bize,-kendisiyle-gönderilen-sorgular?,-ba?ka-bir-fonksiyon-içerisinde-yorumlama-imkan?-sa?lar.-bu-demektir-ki-xmlhttprequest-ile-bir-dosyaya-bir-sorgu-gönderilir,-al?nan-sonuç-ba?ka-bir-sayfa-içerisine-yüklenme-ihtiyac?-hissetmeden-kullan?l?r--peki?tirmeniz-aç?s?ndan-bu-sat?r?-dört-kere-okuyun,-bir-deftere-de-otuzbe?-defa-yaz?n-. microsoft-xmlhttprequest-nesnesini-internet-explorer-5-ile-bir-activex-bile?eni-olarak-sundu--bu-nedenle-ajax-beti?i-içeren-dosyalar?-do?rudan-açt???n?zda-güvenlik-uyar?s?-vermektedir-,-mozilla-en-uyumlu-sürümünü-mozilla-1.0'da,-netscape-7.0'da,-apple-ise-safari-1.2-üzerinde-çal??t?rabildi.-?irketlerin-hepsi-amerika'da-oldu?u-halde-oralarda-"kom?u-kom?unun-külüne-muhtaçt?r"-?eklinde-bir-atasözü-bulunmamas?ndan-belki,-el-birli?i-yap?pta-tek-bir-nesne-etraf?nda-toplanamad?lar.-bu-nedenle-sayd???m-taray?c?larda-xmlhttprequest-nesnesini-çe?itli-metodlarla-kullanabilmekteyiz--asl?nda-o-kadar-çok-de?iller-abart?yorum-biraz-. 3.1.-metodlar-1 mozilla-ve-safari-için;var-req-=-new-xmlhttprequest(); activex-için-(ms-ie);var-req-=-new-activexobject("microsoft.xmlhttp"); ?eklinde-xmlhttprequest-nesnesini-olu?turabilmekteyiz.-k?ll???-gördü?ünüz-üzere-illaki-bir-farkl?l?k-kompleksi-ortada-öylece-durmaktad?r.-nesne-metodlar?-?u-?ekilde;
metod
aç?klama
abort()
geçerli-iste?i-iptal-eder.
getallresponseheaders()
tüm-kar??l?k-ba?l?k-etiketilerini-ve-de?erlerini-string-olarak-elde-eder.
getresponseheader("ba?l?ketiketi")
verilen-ba?l?k-etiketinin-ta??d???-de?eri-string-olarak-elde-eder.
open("metod",-"adres"[,-asyncflag[,"username"[,-"password"]]])
sorgu-gönderilmeden-önce,-sorgunun-gönderilece?i-adresi,-gönderi-metodunu-ve-di?er-seçime-ba?l?-netilkleri-belirler.
send(içerik)
sorguyu-gönderir.-seçime-ba?l?-olarak-gönderilebilen-verileri-ve-dom-ile-yarat?lm??-verileri-de-gönderebilir.
setrequestheader("etiket",-"de?er")
gönderilen-sorguya-bir-etiket/de?er-ba?l???n?-ili?tirir.
tabloda-gösterilen-"metod"-verileri-çekmekte-kullanaca??m?z-http-metodunu-ifade-etmektedir.-bildi?iniz-gibi-html-ile-dosyalara-sorgu-gönderirken-iki-ayr?-yöntem-izliyoruz.-bunlardan-birincisi-do?rudan-sayfa-ad?n?-ça??r?ken-kulland???m?z-test.html?id=1234567890,-di?eri-ise-form-verilerini-göndermek-için-kulland???m?z-get-ve-post-metodlar?.-xmlhttprequest-nesnesi-ile-dosyalar?m?za-sorgu-gönderirken-de-yine-get-ve-post-metodlar?ndan-istedi?imiz-bir-tanesini-kullanmak-durumunday?z.-get-genellikle-dosyalara-do?rudan-sorgulama-maksad?yla-kullan?l?r.-Örne?in-bir-blog-uygulamas?nda-makaleler.asp?id=123-?eklindeki-sorguyu-get-kullanarak-gönderebiliriz.-fakat-sunucuya-veri-gönderece?imiz-ve-gönderdi?imiz-verilerin-toplam-boyutunun-512-byte'dan-fazla-oldu?u-zamanlarda-post-metodu-bizim-için-daha-uygun-olacakt?r.-post-metodunda-da-sayfa-adresine,-get-kullan?rkenki-gibi-fazladan-bir-sorgu-ekleyebiliriz. sorgunun-gönderime-haz?rlanmas?-durumunu--open(...)--belirten-metodun-üçüncü-özelli?i,-yani-asyncflag-gönderilen-i?in-e?-zamanl?-olmay???n?-belirler.-bu-özelli?in-de?eri-boolean,-yani-ya-true,-ya-da-false-olarak-belirlenir. geçerli-de?eri-de-olan-true-seçilirse-yap?lan-i?-e?-zamans?z-olarak-yürütülür.-e?er-bu-de?er-false-olarak-belirlenirse;-betik,-gönderdi?i-sorgunun-sunucu-taraf?ndan-yorumlanmas?n?-ve-bir-kar??l?k-verilmesini-bekler,-do?al-olarak-ta-yap?lan-hareketin,-mutlaka-istek-cevap-?ekline-dönü?türülmesi-sa?lan?r. bu-mant?kta-herhangi-bir-problem-görülmemesine-ra?men--do?al-olan?-bu-de?il-mi-i?te?-istemci-istek-gönderir,-sunucu-cevap-verir,-istemci-de-i?lemine-devam-edebilmek-için-sunucunun-cevab?n?-bekler--bu-metodun-kullan?lmas?-?ebeke-veya-sunucu-hatalar?-olu?umundaki-risk-pay?n?-artt?rmaktad?r.-bu-nedenle-yap?lan-i?in-e?-zamanl?-olmamas?-ve-istem-nesnesinin-onreadystatechange--halihaz?rdaki-durum-de?i?ti?inde...--hareketi-ile-kontrol-edilmesi-daha-güvenlidir. a?a??daki-genel-fonksiyon;-nesne-yarat?m?n?,-hareket-yöneticisinin-belirlenmesini-ve-bir-get-metodunun-kullan?lmas?n?-içeriyor.-fonksiyonda-genel-de?i?ken-olarak-kullan?lan-req-,-nesne-yarat?m?ndan-sonra--req.send()-sonras?--sunucunun-gönderdi?i-cevab?-da-yükleniyor.-burada-genel-bir-de?i?ken-kullanmam?z-bize,-sorgulaman?n-sonunda-elde-edilen-verileri,-beti?in-herhangi-bir-yerindeki-di?er-ba?ka-bir-fonksiyon-içerisinde-de-kullanabilme-imkan?-sa?l?yor.-nesneye-atanan-req.onreadystatechange-=-processreqchange;-özelli?i-ise,-istem-nesnesinin-halihaz?rdaki-durumunun-de?i?mesi-sonucunda--sunucunun-bir-cevap-vermesi-halihaz?rdaki-durumu-de?i?tirir--elde-edilen-de?i?iklikleri-processreqchange()-fonksiyonu-içerisinde-kullanabilmemize-olanak-tan?r.
var-req;function-loadxmldoc(url)-{ -req-=-false; -//-branch-for-native-xmlhttprequest-object -if(window.xmlhttprequest)-{ - -try-{ - - -req-=-new-xmlhttprequest(); -}-catch(e)-{ - - -req-=-false; -} -//-branch-for-ie/windows-activex-version -}-else-if(window.activexobject)-{ - -try-{ - -req-=-new-activexobject("msxml2.xmlhttp"); - -}-catch(e)-{ - -try-{ - - -req-=-new-activexobject("microsoft.xmlhttp"); - -}-catch(e)-{ - - -req-=-false; - -} - -} -} -if(req)-{ - -req.onreadystatechange-=-processreqchange; - -req.open("get",-url,-true); - -req.send(""); -}}
not:-genel-bir-?art-olarak,-cevap-veren-dosyan?n-content-type-de?erinin-text/xml-olmas?-gerekir.-bu-de?erin-text/plain-ya-da-text/html-olarak-gelmesi-durumunda-elde-edilen-veriler-responsetext-özelli?i-ile-al?narak-kullan?labilir.3.2.-Özellikler?stem-gönderilmeyi-müteakip;-betik,-uygulamaya-devam-etmek-için-gelen-cevap-üzerinde-bir-kaç-özelli?e-eri?ebilir.-bu-özellikler-de?i?tirilemez.
Özellik
aç?klama
onreadystatechange
halihaz?rdaki-durum-de?i?ikliklerini-i?ler.
readystate
nesne-durumunu-numerik-olarak-belirtir-:0-=-ba?lat?lamad?1-=-yükleniyor2-=-yüklendi3-=-etkile?imli4-=-tamamland?
responsetext
sunucu-cevab?n?-metin-olarak-elde-eder.
responsexml
sunucu-cevab?n?-dom-ile-etkile?imli-kullan?lmas?n?-sa?layacak-?ekilde-elde-eder--xml-verileri-
status
sunucu-cevab?-numaras?d?r.-"sayfa-bulunamad?"-hatas?-için-404-ya-da-sayfan?n-sorunsuz-yüklendi?ini-belirtmek-için-200-gibi.
statustext
numerik-olarak-elde-edilen-nesne-durumu-ile-beraber-gelen-metindir.
readystate-özelli?i-durum-de?i?ikli?i-fonksiyonu-içerisinde-kullan?larak,-sunucu-cevab?n?n-nesneye-yükledi?i--yani-nesne-durumu-sunucu-cevab?-ile-do?rudan-alakal?--durum-numaras?-ile-yap?lacak-i?lemlere-yön-verilir.-readystate-de?eri-sorgu-ve-sonuç-elde-etme-i?lem-devam-etmekte-iken-1'e,-i?lem-tamamland???nda-ise-4'e-e?itlenir.-bu-durumlar?n-incelenmesi-k?sm?na-processreqchange()-fonksiyonunda-iyice-de?inece?iz. bir-sonuç-elde-etti?imizden-emin-olabilmemiz-için-hala-bir-kaç-do?rulamaya-daha-ihtiyac?m?z-var.-Çünkü-her-ne-kadar-i?lem-tamamland?ktan-sonra-readystate-özelli?i-4'e-e?it-olsa-da,-bu-i?lemde-bir-hatan?n-meydana-gelip-gelmede?ini-ifade-etmez--belki-sql-sorgumuz-bir-hataya-sebep-oldu-ve-sayfa-http-500-iç-sunucu-hatas?-verdi-.-Çünkü-bu-durum-numaras?-sadece-sayfan?n-yüklenme-i?lemini-ifade-etmektedir.-??in-bu-k?sm?nda-status-ve-statustext-devreye-girer-ve-hiçbir-hata-meydana-gelmemi?se-status-özelli?i-200'e,-statustext-ise-ok'e--string--e?it-olur. sunucunun-gönderdi?i-sonuçlar-responsetext-ve-responsexml-özellikleri-ile-i?lemeye-haz?r-halde-elde-edilir.-responsetext-özelli?i,-al?nan-verinin-sadece-metin-olarak-bir-de?eri-oldu?unu-ifade-eder.-fakat-responsexml-ile-daha-güçlü-ve-zengin-bir-veri-ak???-sa?lan?r--verileri-responsexml-özelli?i-ile-alabilmek-için-cevap-veren-pozisyonundaki-dosyan?n-content-type-de?erinin-text/xml-olmas?-gerekir.-dosyalar?n-en-üstüne-php-için-header('content-type:-text/xml');,-asp-için-response.contenttype-=-"text/xml"-yaz?larak-ç?kt?n?n-xml'e-dönü?türülmesi-sa?lanabilir.-tabi-ki-hiyerar?inin-de-xml-dosyalar?na-uygun-düzenlenmesi-gerekir-. s?radaki-fonksiyonumuz-daha-önce-belirtti?im-gibi-onreadystatechange-ile-ça??rd???m?z-processreqchange()-fonksiyonudur.-burada-readystate-ve-status-özelliklerinin-ikisini-de-kullanarak-döküman?m?z?n-önce-yüklendi?ini,-sonra-da-sorunsuz-olarak-yüklendi?ini-sorguluyoruz.
function-processreqchange()-{ -//-readystate-de?eri-sayfan?n-yüklendi?ini-bildirmi?se... -if-(req.readystate-==-4)-{ -//-sayfa-sorunsuz-olarak-yüklenmi?se... -if-(req.status-==-200)-{ -//-...i?lemin-sorunsuz-olarak-tamamlanmas?-durumunda-yap?lmas?-istenen-i?lemler... -}-else-{ -alert("xml-verilerinin-al?nmas?-s?ras?nda-bir-hata-meydana-geldi:n"-+ -req.statustext); -} -}}
?ayet-sunucunuzun-cevap-verme-süresi-konusunda-endi?eleriniz-varsa-loadxmldoc()-fonksiyonunu-güncelleyerek-send()-metoduna-genel-bir-zaman-belirleyici-ekleyeblir,-processreqchange()-içerisinde-ba?lang?ç-zaman?ndan-sonra-halen-cevap-verilmemi?-süreyi-göz-önüne-alarak,-kendi-belirledi?iniz-bir-süre-zarf?n?-müteakip-req.abort()-metodunu-ça??rarak-i?lemi-durdurabilir-ve-ziyaretçiyi-i?lemin-gerçekle?emedi?i-konusunda-uyarabilirsiniz--bkz.-http://forum.zoque.net/showthread.php?t=20560&highlight=google-.4.-pratikolay?n-temelini-de?il-de,-ajax-denilen-?eyin-bu-kadar-ufak-olmas?n?-beklemiyordunuz-umar?m.-temeli-bu-kadar-ufak-olsa-dahi,-bu-önceleri-sadece-bir-nesne-olarak-ortaya-ç?kart?lan-yöntemin-neler-yapabilece?ini-bugün-canl?-canl?-görebiliyoruz.-bugün-ajax,-dom'un-html-üzerindeki-büyük-etkisi-sayesinde-çok-büyük-i?ler-ba?arabilmektedir--ki-geçenlerde-zimbra.com'u-gördüm-nutkum-tutuldu-.-?imdi-bunu-nas?l-yapt???na-de?inece?im.4.1.-dom-nedir?-2dom-denilen-?ey-asl?nda-o-kadarda-ürkütücü-bir?ey-de?ildir--doom'u-ça?r??t?rd???ndan-ürkütebildi?ini-gördüm-.-ak?llarda-bir-soru-i?areti-var.-javascript-ve-dom-tam-olarak-ayr?-?ey-de?iller.-bunu-k?sa-bir-örnekle-aç?klamak-istiyorum.
1.window.onload-=-function-{2. -var-links-=-document.getelementsbytagname("a");3. -var-containerlinks-=-document.createelement("div");4. -var-linkslister-=-document.createelement("ul");5.6. -for-(var-i=0;-i-<-links.length;-i++){7. - -var-linkitem-=-document.createelement("li");8. - - -linkitem.innerhtml-=-links[i].getattribute("href");9. - -linkslister.appendchild(linkitem);10. -}11. 12. -containerlinks.appendchild(linkslister);13.}
1.-window.onload-=-function(){-:-burada-window-nesnesinin-onload-hareketine-bir-fonksiyon-at?yoruz.-yani-pencerenin-yüklenmesiyle-birlikte-d??ar?dan-bir-etki-beklenmeden-bu-fonksiyonumuz-çal??maya-ba?layacak.2.-var-links-=-:-burada-links-ad?nda-bir-de?i?ken-tan?ml?yoruz.2.-document.getelementsbytagname("a")-:-document--d-ve-d-fark?-öenmlidir--arayüzü,-dom1-çekirde?i-ile-tan?mlanan-ilk-arayüzdür-ve-document,-nesne-uygulamas?nda-document-arayüzünde-nesne-yüklenicisi-pozisyonundad?r.-dom1-çekirde?inde-getelementsbytagname()-metodu-da-yine-document-arayüzü-üzerinde-tan?mlan?r.-getelementsbytagname()-ile-istenen-tag-ad?,-tüm-döküman-üzerinde-taran?r--nodelist-.-burada-"a"-ile-döküman-kaynak-kodundaki-tüm-ba?lant?lar?-elde-etmi?-oluyoruz.3.-document.createelement("div")-:-document-arayüzünde-tan?mlanm??-createelement-metodu-ile-döküman-üzerinde-istenen-tag-olu?turulabilir.6.-for-(var-i=0;-i-<-:-tipik-"for".."next"-döngüsü.6.-links.length-:-dom1-çekirde?i-ile-tan?mlanm??-bir-di?er-özellik-ise-lenght'dir.-bu-özellik-sayesinde-daha-önceden-elde-edilen-nodelist'lerin-bar?nd?rd???-eleman-say?lar?-elde-edilebilmektedir--javascript,-array-kullan?m?nda-lenght-özelli?ine-zaten-sahiptir-.8.-linkitem.innerhtml-=-:-element-arayüzünde-tan?mlanan-innerhtml-metodu-ile-elemanlar?n-bütün-içerik-metinleri-string-olarak-elde-edilir.-bir-de?ere-e?itlendi?i-taktirde-eleman-içeri?i-yeni-de?erle-de?i?ir.--linkitem.innerhtml-=-linkitem.innerhtml+"test"-ile-içeri?e-yeni-metin-eklenebilir-8.-links[i].getattribute("href")-:-element-arayüzünde-tan?mlanan-getattribute-metodu-ile-verilen-eleman?n-istenen-özelli?ine-atanan-de?er-elde-edilir.--Örne?in-
-içerisindeki-src-özelli?inin-de?eri-img.gif'tir-9.-linkslister.appendchild(linkitem)-:-appendchild-metodu-ile-verilen-bir-eleman-içeri?inin-en-sonuna-yeni-bir-eleman-eklenir.-burada-linkitem-de?i?kenine-tan?mlad???m?z-document.createelement("li")-eleman?n?,-linkslister-de?i?kenine-tan?mlad???m?z-document.createelement("ul")-eleman?-içerisine-ekliyoruz.12.-containerlinks.appendchild(linkslister)-:-yine-ayn?-metod-ile-döngü-esnas?nda-tüm-linkitem-de?i?kenlerini-kendisine-ekledi?imiz-linkslister-de?i?kenini-ana-ta??y?c?m?z-olarak-belirledi?imiz-containerlinks-de?i?kenine-ekliyoruz.-sonuç-olarak-hiyerar?i-div->-ul->-li-?eklini-al?yor. bu-k?sa-ama-yorucu-dom-kursundan-sonra-san?r?m-dom-ve-javascript'in-birle?tikleri-ve-ayr?ld?klar?-noktalar?-kavrayabilmi?sinizdir.-javascript-bize-altyap?y?-sa?larken,-dom-ile-onun-sa?lad???-zeminde-güzel-?eyler-in?a-edebiliyoruz.-zemin-güzel,-hava-güzel,-peki-hakemin-durumu-nedir?-hakemden-kast?m-tabiki-ajax-burada-:) 4.2.-xmlhttprequest-ve-dom-bir-gün-bulu?mu?lar...derken-xmlhttprequest-ve-dom-bir-gün-bulu?mu?,-oturup-konu?mu?lar-uzun-uzun.-sonunda-"ortak-bir-i?-çevirelim"-demi?-xmlhttprequest.-dom-ise-"bak-karde?i-ben-anlamam-senin-yapt???n-i?lerden,-var-git-i?ine-eyleme-beni"-diye-eklemi?.-bu-sefer-xmlhttprequest-?srar-etmi?-ve-"sen-fazla-bir?ey-yapmayacaks?n-zaten,-sendeki-olan?-kullanal?m-yeter-oras?-bana"-diyerek-kand?rm??-dom'u-orac?kta.-derken-xml'i-de-bu-i?e-ortak-etmi?ler-ve-ordan-geçen-amerikal?n?n-biri-demi?ki-"e-javascript-var,-xml-var,-xmlhttprequest-var,-ne-duruyorsun-dom?"-diyerekten-vermi?-gaz?-dom'a.-??te-tam-burada-sadetimizin-meyvesi-ajax-dünyaya-gelmi?.4.3.-Çal??ma-zaman?bu-kadar-anlat?mdan-sonra-elle-tutulur-bir?eyler-yapmak-laz?md?r-herhalde.-?lk-fonksiyonumuz;-xmlhttprequest'-i-get-ve-post-metodlar?yla-kolayca-kullanmam?z?-sa?layacak,-kendi-yaratt???m?z-request-nesnesine-tutturdu?umuz-sendget()-ve-sendpost(). var-request-=-new-object();request.send-=-function(url,-method,-callback,-data){ -var-req; -if-(window.xmlhttprequest)-{ - -req-=-new-xmlhttprequest(); -}-else-if-(window.activexobject)-{ - -req-=-new-activexobject("microsoft.xmlhttp"); -} -req.onreadystatechange-=-function()-{ - -if-(req.readystate-==-4)-{ - - -if-(req.status-<-400)-{ - - - -(method=="post")-?-callback(req)-:-callback(req,data); - - -}-else-{ - - - -alert("verilerin-yüklenmesi-s?ras?nda-bir-hata-meydana-geldi-:n"-+-req.status+-"/"-+-req.statustext+"n"+url); - - -} - -} -} -if-(method=="post")-{ - -req.open("post",-url,-true); - - -req.send(data); -}-else-{ - -req.open("get",-url,-true); - -req.send(null); -} -return-req;};request.sendpost-=-function(url,-data,-callback){ -request.send(url,-"post",-callback,-data);};request.sendget-=-function(url,-callback){ -return-request.send(url,-"get",-callback);}; burada,-yap?ta?lar?-ba?l???nda-bir-örne?ini-verdi?im-xmlhttprequest-nesnesinin-kullan?lmas?na-ait,-ayn?-mant?kta;-sadece-biraz-daha-kolayla?t?r?lm??-bir-fonksiyonu-görmektesiniz--yaz?m?n?-kastetmiyorum,-kullan?m-olarak-kolay-:)--bu-fonksiyonlar-kümesini-iki-de?i?ik-?ekilde-kullanabiliriz.1.-request.sendget("user.asp?do=list",-listuser)-:-request.sendget-fonksiyonu-gönderinin-get-metodu-ile-yap?lmas?n?,-"user.asp?do=list"-de?eri-user.asp-dosyas?na-?do=list-?eklinde-bir-querystring-gönderilmesini,-listuser-ise-sonuç-al?nmas?-durumunda--sonuç,-veri-ile-ayn?-?ey-de?ildir--sonucun-yorumlanmas?n?-sa?layacak-fonksiyon-ad?n?-ifade-eder.2.-request.sendpost("user.asp?do=import",-"email="+useremail,-welcomemessage)-:-request.sendpost-fonksiyonu-gönderinin-post-metodu-ile-yap?lmas?n?,-"user.asp?do=import"-de?eri-verilerin-gönderilece?i-dosyay?,-"email="+useremail-de?eri-email-ad?nda-bir-request.form-de?erinin-gönderilece?ini-ve-bu-form-eleman?n?n-daha-önceden-useremail-de?i?kenine-atanan-bir-de?er-oldu?unu,-welcomemessage-ise-sonuç-al?nmas?-durumunda-sonucun-yorumlanmas?n?-sa?layacak-fonksiyon-ad?n?-ifade-eder. art?k-sorgulama-yapabildi?imize-göre-bir-live-search-örne?i-ile-devam-edelim.-bu-örnekte-ziyaretçi-kullan?c?-giri?i-s?ras?nda-e-posta-adresini-ilgili-alana-girerken,-veritaban?m?zdaki-users-tablosundaki-name,-surname-ve-mail-alanlar?nda-arama-yaparak-e?le?en-kay?tlar?-s?ralat?p-bir-auto-complete-aksiyonu-yarat?yoruz. aramay?-gerçekle?tiren-ve-sonuçlar?-xml'e-çeviren-users.asp-dosyam?z;<% -response.contenttype-=-"text/xml" -session.codepage-=-1254 -session.lcid-=-1055 -session.timeout-=-155 -response.buffer-=-true -response.expires-=--1 -response.expiresabsolute-=-now()---2 -response.addheader-"pragma","no-cache" -response.addheader-"cache-control","private" -dim-strdsnquery,-congeneral,-strkey -strdsnquery-=-"provider='microsoft.jet.oledb.4.0';-data-source='"&server.mappath("vt.mdb")&"';" -set-congeneral-=-server.createobject("adodb.connection") - -congeneral.open-strdsnquery - -function-openrec(strobjname,-strsqlquery) - - -on-error-resume-next - - -set-strobjname-=-server.createobject("adodb.recordset") - - - -strobjname.cursortype-=-1 - - - -strobjname.cursorlocation-=-3 - - - -strobjname.locktype-=-1 - - - - - -strobjname.open-strsqlquery,-congeneral,-1,-3 - - - - - -if-err-then - - - -response.write-" yürütülen-"&strsqlquery&"-sorgusu-s?ras?nda-bir-hata-meydana-geldi.
" - - - -response.end() - - -end-if - -end-function - - -strkey-=-trim(request.querystring("key")) - - -if-(-strkey-=-""-)-then-strkey-=-"abcdefgijklmnoprstuvyz" - - -call-openrec(objuserlist,"select-*-from-users-where-(name-like-'%"&strkey&"%'-or-surname-like-'%"&strkey&"%'-or-mail-like-'%"&strkey&"%');") - - -do-until-objuserlist.eof - - - -response.write-vbtab&""&objuserlist("mail")&""&vbcrlf - - -objuserlist.movenext - - -loop - - - -objuserlist.close() - -set-objuserlist-=-nothing -congeneral.close() -set-congeneral-=-nothing -%> ??lemi-gerçekle?tirecek-init()-fonksiyonumuz;var-nth-=-new-object();nth.init-=-function(){ -var-key-=-document.getelementbyid("inputkey").value; -function-listuser(response){ - -var-rootnode-=-response.responsexml.documentelement; - -var-users-=-rootnode.getelementsbytagname("user"); - -var-container-=-document.getelementbyid("resultsarea"); - -var-containerlist-=-document.createelement("div"); - - -containerlist.id-=-"listusers"; - - -containerlist.innerhtml-=-""; - - - -function-_selectusername(){ - - -var-name-=-window.event.srcelement.getattribute("name"); - - -document.getelementbyid("inputloginusername").value-=-name; - - -container.removechild(document.getelementbyid("listusers")); - -} - - - -for(x-=-0;-x-<-users.length;-x++){ - - -var-listelement-=-document.createelement("a"); - - - -listelement.innerhtml-=-users[x].getattribute('name')+""; - - - -listelement.setattribute("name",users[x].getattribute('name')); - - - -listelement.setattribute("href","javascript:;"); - - - -listelement.setattribute("onclick","document.getelementbyid('inputkey').value-=-this.name;"+ - - - -"document.getelementbyid('listusers').style.display-=-'none';"); - - -containerlist.appendchild(listelement); - -} - -if(document.getelementbyid("listusers")) - - -container.removechild(document.getelementbyid("listusers")); - -if(key!="")container.appendchild(containerlist); -} -request.sendget("users.asp?key="+key,-listuser)} arama-alan?: lütfen-arama-kutusuna-bir-isim-girin; - - -
Yürütülen "&strSQLQuery&" sorgusu s?ras?nda bir hata meydana geldi." Response.End() End If End Function strKey = Trim(Request.QueryString("key")) If ( strKey = "" ) Then strKey = "abcdefgijklmnoprstuvyz" Call openRec(objUserList,"SELECT * FROM users WHERE (name LIKE '%"&strKey&"%' OR surname LIKE '%"&strKey&"%' OR mail LIKE '%"&strKey&"%');") Do Until objUserList.EOF Response.Write vbTab&"
"; listElement.setAttribute("name",users[x].getAttribute('name')); listElement.setAttribute("href","Javascript:;"); listElement.setAttribute("onclick","document.getElementById('inputKey').value = this.name;"+ "document.getElementById('listUsers').style.display = 'none';"); containerList.appendChild(listElement); } if(document.getElementById("listUsers")) container.removeChild(document.getElementById("listUsers")); if(key!="")container.appendChild(containerList); } Request.sendGET("users.asp?key="+key, listUser)} Arama alan?:
Lütfen arama kutusuna bir isim girin;
Veritaban? dosyam?z (vt.mdb):Field name Data type------------------------------------id | AutoNumbername | Textsurname | Textmail | Text 5. Kaynaklar1 http://developer.apple.com/internet/webcontent/xmlhttpreq.html2 http://developer.mozilla.org/en/docs/The_DOM_and_JavaScript 5.1. ?nceleyin1. netvibes.com, js2. live.com, js1, js2, js3, js43. google.com/ig, js1, js24. LiveSearch örne?i, js, .zip