30 Saniyede AJAX

AJAX yakuter

Eburhanın yazmış olduğu AJAX'i Anlamak ve İbrahim'in AJAX'in ne olduğuna değindiği AJAX Seminer Notlarım yazılarından sonra sanırım AJAX hakkında genel olarak fikir sahibi olduk. Bu yazımla kodlara ilk adımımızı atacağız ve AJAX'in çekirdeği olan XMLHTTPREQUEST nesnesinin kullanımını göreceğiz.

Konuyu daha somut olması açısından bir örnekle anlatacağım. Örneğimizde bir kutu ve buton bulunuyor. Kutuya girilen isim eğer "ajax-tr" ise sonuç "Tamam" değilse "Hata!" olacaktır.

XMLHTTPREQUEST nesnesini çağırma

Önce en basit haliyle XMLHTTPREQUEST nesnesinin çağırılışını görelim.
(Birinci yöntem)

PHP:
  1. nesne = new XMLHttpRequest();

Normal şartlarda bu nesneyi çağırmak gördüğünüz gibi oldukça basit ve açık. Tabi internet explorer yine bize gıcıklık yapıyor ve bu kullanımı tanımayabiliyor. Fakat çözümü yok değil tabiki. İnternet explorer için de nesnemizi şöyle çağırabiliyoruz.
(İkinci yöntem)

PHP:
  1. nesne = new ActiveXObject("Microsoft.XMLHTTP");

Şimdi bu iki çağırma şeklinden faydalanarak tüm tarayıcılarda çalışabilecek bir fonksiyon yazalım. Bu fonksiyon sayfayı ziyaret eden kişinin tarayıcısını kontrol eden ve tarayıcı firefox, opera, safari gibi bir tarayıcı ise birinci yöntemi, internet explorer'da ise ikinci yöntemi kullanan bir fonksiyon olmalı.

PHP:
  1. function nesneyarat() {
  2.     var nesne;
  3.     var tarayici = navigator.appName;
  4.     if(tarayici == "Microsoft Internet Explorer"){
  5.         nesne = new ActiveXObject("Microsoft.XMLHTTP");
  6.     }else{
  7.         nesne = new XMLHttpRequest();
  8.     }
  9.     return nesne;
  10. }
  11.  
  12. var http = nesneyarat();

Bu fonksiyon ile XMLHTTPREQUEST nesnemiz çağırılıyor ve http değişkenine atanarak sitede kullanılabilecek duruma geliyor. Bu nesneyi çağırmanın bir çok farklı yolu mevcut. En basitinden buna bir hata yakalama kodları da eklenebilirdi veya eski tip nesne çağırılabilirdi ama bu işi yeni öğrenenler için o kadar zorlamak ve kodu karmaşıklaştırmak istemiyorum. Sonraki örneklerimizde daha gelişmiş fonksiyonlar kullanarak daha tutarlı uygulamalar yapacağız.

İşlem fonksiyonu ve XMLHTTPREQUEST metodları

Sıra geldi işlem yapacak olan fonksiyonumuza. İşlem derken formdan gelen değerleri yani kullanıcının girdiği bilgileri alıp sunucuya gönderip cevap isteyen fonksiyondan bahsediyorum. Örneğimiz için aşağıdaki gibi kısa bir fonksiyon bize yetecektir.

PHP:
  1. function islemkutu() {
  2.     var deger = document.erhan.isim.value;
  3.     http.open('get', 'kontrol.php?degisken=' + deger);
  4.     http.onreadystatechange = cevapFonksiyonu;
  5.     http.send(null);
  6. }

Güncelleme 24 Temmuz 2007
ASP kullananlar yukarıdaki kod yerine şunu kullanacaklardır.

PHP:
  1. function islemkutu() {
  2.     var deger = document.erhan.isim.value;
  3.     http.open('get', 'kontrol.asp?degisken=' + encodeURI(deger));
  4.     http.onreadystatechange = cevapFonksiyonu;
  5.     http.send(null);
  6. }

Yukarıdaki fonksiyonda open ile get metodu kullanarak kontrol.php dosyasına bilgiyi gönderiyoruz. Buradaki satırların başında http olmasının sebebi benim nesneyi en başta http değişkenine atamış olmam. onreadystatechange ise XMLHTTPREQUEST nesnesinin bir metodudur ve çağırdığımız nesnenin durumunun değişmesi durumunda (örneğin cevap gelirse değişmiş olur) işlem yapar. Burada cevapFonksiyonu 'nu çağırmak için kullandık. XMLHTTPREQUEST nesnesinin metodlarını biraz açacak olursak:

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.

Sunucudan cevabın alınması

Örneğimize kaldığımız yerden devam ediyoruz. cevapFonksiyonu ismini verdiğimiz fonksiyon sunucudan cevap geldiğinde yapmak istediğimiz işlemi belirlediğimiz fonksiyondur. Tabiki fonksiyonun ismi size kalmış. Onu da örneğimiz için şöyle oluşturalım.

PHP:
  1. function cevapFonksiyonu() {
  2. if(http.readyState == 4){
  3.    document.getElementById('yer').innerHTML = http.responseText;
  4. }
  5. }

Burada nesnemizin readyState metodundan faydalanıyoruz. Bu metodun alabileceği değerler ve karşılıkları şu şekildedir.

0 = başlatılamadı
1 = yükleniyor
2 = yüklendi
3 = etkileşimli
4 = tamamlandı

Burada 1 ve 4 sayılarının dikkatinizi çekmesini istiyorum. 1 durumunu ekrana yükleniyor yazmak istediğimizde kullanırız. 4'ü ise işlemimiz tamamlandığında (başarılı bir şekilde gerçekleştiğinde) kullanırız. Elbette ileri düzey uygulamalarda (özellikle hata yakalamalarda) diğer durumlar da önemli olacaktır. Örneğimizde de 4 olup olmadığını yani işlemin başarılı bir şekilde gerçekleştirilip gerçekleştirilmediğini kontrol ediyoruz. Eğer başarılı ise sayfamızda yer id'sine sahip unsurun değeri sunucudan gelen cevap (responseText) olacaktır.

Sonuç

Bu anlattıklarımı toparlayarak tek bir dosya haline getirelim ve ismine index.htm diyelim. İçeriği de şu şekilde toparlayalım.

HTML:
  1. <title>Yakuter'den XMLHTTPREQUEST</title>
  2. <script type="text/javascript">
  3. function nesneyarat() {
  4.     var nesne;
  5.     var tarayici = navigator.appName;
  6.     if(tarayici == "Microsoft Internet Explorer"){
  7.         nesne = new ActiveXObject("Microsoft.XMLHTTP");
  8.     }else{
  9.         nesne = new XMLHttpRequest();
  10.     }
  11.     return nesne;
  12. }
  13.  
  14. var http = nesneyarat();
  15.  
  16. function islemkutu() {
  17.     var deger = document.erhan.isim.value;
  18.     http.open('get', 'kontrol.php?degisken=' + deger);
  19.     http.onreadystatechange = cevapFonksiyonu;
  20.     http.send(null);
  21. }
  22.  
  23. function cevapFonksiyonu() {
  24.     if(http.readyState == 4){
  25.         document.getElementById('yer').innerHTML = http.responseText;
  26.     }
  27. }
  28. </script>
  29.  
  30. </head>
  31.  
  32.  
  33. <form name="erhan" action="javascript:void(0)" method="get">
  34.     <input type="text" name="isim">
  35.     <input type="button" name="yap" onclick="islemkutu();" value="Tamam">
  36. </form>
  37.  
  38. <div id="yer"></div>
  39.  
  40. </body>
  41. </html>

Sunucuda iletişime geçmek istediğimiz dosyanın da ismine kontrol.php diyelim ve içine şu kodları yazalım.

PHP:
  1. <?php  
  2.     if ($_GET['degisken']=="ajax-tr")  
  3.         { echo "Tamam"; }
  4.     else
  5.         { echo "Hata!";}
  6. ?>

Güncelleme 24 Temmuz 2007
ASP kullananlar yukarıdaki kod yerine şunu kullanacaklardır.

PHP:
  1. <%
  2.  If Request.QueryString("degisken") = "ajax-tr" Then
  3.   Response.Write("Tebrikler, dogru yazdiniz.")
  4.  Else
  5.   Response.Write("Hata, yanlis yazdiniz.")
  6.  End If
  7. %>

Kodunu yazmış olduğumuz bu örneğin nasıl çalıştığını görmek için
buraya, örneğin dosyalarını indirmek için ise buraya tıklayınız.

Son sözler

Bugün yazdığım makalede konuyu çok yaymamak için AJAX'in sadece javascript yanını kullandım. Diğer önemli unsur olan XML kısmına değinmedim. Bir sonraki makalelerimizde size XML ile örnekler de hazırlayacağız.

Bu vermiş olduğum örnek çok basit bir uygulama olduğu için eksikleri mutlaka vardır ve daha tutarlı kodlar yazmak mümkün. Konuyu anlatmak için bazen böyle kodlardan fedakarlık edilebiliyor ;)

Yazıyı ASP programcıları için güncellememize yardım eden "slyther" dostumuza gönülden teşekkürler.

Kaynaklar

Rasmus' 30 second AJAX Tutorial
Nothingrows AJAX
30 Saniyede AJAX Öğrenin
XMLHttpRequest Vikipedi
Ajax Nasıl?
XMLHttpRequest Nedir? Ne iş yapar?

Toplamda 32402 kez okunmuş.
Şu an 1 kişi okuyor.
En fazla 9 kişi aynı anda okumuş.
Bugün 20 kez okunmuş.

Etiketler:

1 oy2 oy3 oy4 oy5 oy (84 oy, ortalama 4.43) Oylanıyor ... Oylanıyor ...

  1.  

Trackback Yorumları takip et Baskı Önizleme

87 yorum var

  1. # İsmail | 31 Ocak 2007, 00:03 Gravatar

    Bu saatte okunmuyo kafa dağınık :) yarısına kadar okudum çok güzl anlatmışsın teşekkürler.Yarın ilk işim bu olayı kasmak olcak :D

  2. # Gürkan OLUÇ [grkn] | 31 Ocak 2007, 01:00 Gravatar

    yakuter, tamam herşey ok, mesela w3c’den aldığım kodu c/p ile çalıştıryorum çalışıyor aynısını kendim yazıyorum olmuyor bu ajax insanı sinir ediyor :) sen ajax kullandığın uygulamalarda herhangi bir framework kullanıyormusun yoksa herbir işlem için böyle ayrı ayrı yazıyor musun nesenyarat() harici fonksiyonları.. birde eburhan’ın yazmış olduğu eyceks kütüphanesi ticari işler için kullanılabiliyor mu?

  3. # yakuter | 31 Ocak 2007, 01:09 Gravatar

    @Gürkan bu sitede başarmaya çalıştığımız konu zaten insanların başka sitelerden almak yerine kendi kodlarını kendilerinin yazmalarını sağlamak ;) Bak mesela kodu alıp hazır bir şekilde kullanmışsın. Hata oluşmuş ve hatasını da bulamıyorsun. Buradaki makaleyi kendin bir uygular, değişiklikler yapıp sonuçları görerek hatalarını görürsen, hazır olarak aldıklarını da bilinçli bir şekilde kullanmaya başlarsın.

    eburhan’ın sınıfı ki önümüzdeki günlerde anlatıcak, ticari amaçlar için kullanılabilir ama senin ihtiyaçlarını ne kadar karşılar orasını bilemem. Zaten bu konuda eburhan daha iyi bir açıklama yapacaktır sana.

    Frameworkleri çok fazla ihtiyacım olmadığı sürece kullanmıyorum. Mesela yukarıdaki gibi bir form kontrolü için hayatta kullanmam. Çünkü prototype mesela en çok bilineni ve 50 ila 70 kb arası büyüklükte. Benim yazdığım kod ise taş çatlasa 2 kb eder. Tabi bazen mecbur kalabilirsin kullanmaya. Baştan kod yazarak zaman kaybetmek yerine hazır kütüphaneler kullanarak kod yazmaya ayıracağın zamanı başka işlerine yönlendirebilirsin.

  4. # Gürkan OLUÇ [grkn] | 31 Ocak 2007, 01:52 Gravatar

    @yakuter, sağol :)

  5. # selmand | 31 Ocak 2007, 14:36 Gravatar

    sadece yazıyı okumak 30 sn’den uzun sürer yahu :)

  6. # x-admin | 31 Ocak 2007, 18:45 Gravatar

    S.a geçekten çok güzel açıklamışsınız sitemde kaynak belirterek kulanarabilir miyim?

  7. # yakuter | 31 Ocak 2007, 19:09 Gravatar

    @selmand kabul ediyorum biraz daha uzun sürüyor ama 180 saniyede ajax demek de pek güzel durmazdı dimi :)

    @xadmin henüz lisans konusunda kesin bir karara varmadık. Yani insanlar artık kaynak göstererek tüm siteyi yayınlamaya başladılar ki bu yanlış olandır. Kendimize uygun bir lisans belirlediğimiz zaman o kurallara göre davranılırsa memnun oluruz. Ayrıca teşekkür ederim davranışınız için. Keşke herkes sizin kadar duyarlı olsa…

  8. # cmg.web | 31 Ocak 2007, 21:33 Gravatar

    Bu yükleme işlemleri sırasında çıkan yükleme resimlerini nasıl koyabiliriz?

  9. # yakuter | 31 Ocak 2007, 21:44 Gravatar

    Bu durumda işlemimiz yükleniyor durumunda yani 1 ‘dedir. cevapFonksiyonuna şöyle bir koşul eklersek

    if(http.readyState == 1){
    document.getElementById(’yer’).innerHTML = ‘resmin urlsi’;

    Yüklenme işlemi sırasında “yerid’sine sahip elementin içinde urlsini vermiş olduğunuz resim görüntülenir.

    Sonraki makalelerimizde bunu da içeren fonksiyonlar yazacağız ;)

  10. # farkob | 03 Şubat 2007, 18:51 Gravatar

    Güzel bir yazı olmuş, elinize sağlık.

    Ayrıca ticari amaç için kullanmak isteyen arkadaşa sesleniyorum: Eyceks belki sitendeki basit bir bölümü karşılamaya yeter, ama eğer profesyonel bir şeyler yapacaksan. prototype, moo.fx (mootools) gibi libraryleri tercih et. Eğer sitenden bir şeyler satacaksan. Alışveriş sepeti ve arama hariç pek kullanmanı tavsiye etmen. Zaten ajax kullanımında yapılan en büyük hatalardan biri sitedeki her şeyi ajaxla güncellemektir.

    @yakuter: bir sürü insan ne yazık ki (bu laftan nefret etmeme rağmen kullanacağım kusura bakmayın) emeğe saygı göstermiyor. Ne tür bir lisans kullanırsanız kullanın çalan çırpan olacaktır. siz yine de göstermelik cc koyun derim.

  11. # Gürkan OLUÇ » Ajax ile POST Methoduyla Veri Yollamak | 06 Şubat 2007, 11:36 Gravatar

    […] …Evet, basit bir veritabanına veri giren haber ekleme işlemi ajax ile yukarıdaki şekilde yapabiliyoruz ben yeni başlayan arkadaşlarımız için biraz basit bir yapı kullanmdım sizlerle büyük çapta projelerinizde kendi basit frameworklerinizi yazarak işleri çok daha kolaylaştırabilirsiniz şimdilik benden bu kadar.. Kaynaklar Nothingrows // Ajax Ajax-tr // 30 Saniyede Ajax W3Schools// AjaxEtiketler:Ajax, PHP, Web, Web 2.0 […]

  12. # İsmail ALTUNTAŞ |LtntS| » Php ve Ajax İle RSS Okuma | 07 Şubat 2007, 14:18 Gravatar

    […] Ajax-tr // 30 Saniyede Ajax W3Schools// Ajax  […]

  13. # frozsgy | 08 Şubat 2007, 19:20 Gravatar

    vay be, süper olmuş yakuter. ne diyeyim. eline sağlık.

  14. # cemil | 11 Şubat 2007, 14:57 Gravatar

    daha açık ve net anlatılamazdı herhalde bu konu. üniversitelerimizde de hikaye yerine bu tarz da direk sonuç veren bir yöntemle bir anlatım sergilense herhalde başarı ortalaması tavan yapardı. Abartı gibi gelicek belki ama okurken tüylerim diken diken oldu yine. herşey için teşekkürler. hakkınızı helal edin gayri.

  15. # Hazar | 17 Şubat 2007, 23:36 Gravatar

    Merhabalar, AJAX hakkında birşeyler öğrenmek isteyen ben için oldukça yararlı oldu. Ancak bu “her yerde” gördüğümüz fonksiyon, daha önce denediğim sınıflarla da dahil olmak üzere hep Türkçe karakterlerimde sorun çıkardı. Türkçe karakterlerim,
    püğpüğçl.sçdö => p?l.s?. halinde gidiyor, arada başka karakterler de yutuluyor. UTF8 kullanıyorum PHP’de de, HTML’de de.
    neyi yanlış yapıyorum?

  16. # Hazar | 18 Şubat 2007, 14:26 Gravatar

    Kendi yanıtımı kendim buldum.
    http.open(’get’, ‘kontrol.php?degisken=’ + deger); değil de
    http.open(’get’, ‘kontrol.php?degisken=’ + encodeURI(deger)); kullanınca sonuç başarılı :)

  17. # yakuter | 18 Şubat 2007, 17:02 Gravatar

    Kendini sonucunu bizimle paylaşman çok güzel. Böylece bu sorunla karşılaşmış olan insanlara bir cevap oldu ;)

  18. # Redirect | 15 Nisan 2007, 03:19 Gravatar

    S.a Arkadaslar bilmemek ayip degil ogrenmemek ayip derler ben sunu sorucaktıim ajax i asp de kullanabiliyormuyuz ?

  19. # yakuter | 15 Nisan 2007, 21:08 Gravatar

    @redirect tabiki sorman oldukça normal. AJAX aslında bir javascript nesnesine benziyor. Nasıl javascript ve asp birlikte kullanılabiliyorsa AJAX da aynı şekilde kullanılabiliyor. Php ile kullanımı arasındaki tek fark formu gönderdiğin dosyayı dosya.php yapmak yerine dosya.asp yapmak ;)

  20. # Redirect | 17 Nisan 2007, 13:58 Gravatar

    Tesekkurler dostum soruma cevap verdigin icin.

  21. # bmseker | 19 Nisan 2007, 08:47 Gravatar

    ya arkadaslar bende de türkçe karakter sorunu çıkıyor. ben buradaki örneği biraz değiştirdim kendime uyarladım. belirlediğim bir div de hazırladığım html dosyaları açılıyor. ama açıldığında Hazar ın dediği gibi türkçe karakterler ya ? oluyor ya da hiç görünüyor. ne yapmam gerekiyor acaba bilen var mı?

  22. # fatih | 19 Nisan 2007, 17:34 Gravatar

    Ajax klasik asp’de kullanılabilir mi?

  23. # eburhan | 19 Nisan 2007, 19:43 Gravatar

    Evet kullanabilirsiniz. ASP, PHP, JSP, ColdFusion… fark etmez.

  24. # Karizma | 24 Nisan 2007, 22:54 Gravatar

    Arkadaşlar ben hiçbirşey anlamadım bu ajax olayından nerede yazıcam ne yapıcam nasıl kodlama yapcam bilmiyorum yardımcı olucak arkadaşlar varmı ?

  25. # evren | 27 Nisan 2007, 22:49 Gravatar

    Yazıyı bir daha okuyarak, verilen örnek çalışmayı kademe kademe uygulayak sonuca ulaşabilirsin Karizma.

  26. # nibble | 29 Nisan 2007, 22:58 Gravatar

    bu olay ancak bu kadar net anlatılabilir sanırım. teşekkürler ihtiyacım olan bir bilgiydi.

  27. # selant | 05 Mayıs 2007, 23:24 Gravatar

    Uzun zamandır php ve mysql tabanlı intranet ve internet uygulamaları geliştiriyorum. Ajax öğrenmeyi çok istiyorum ve her seferinde gözüm korkuyordu. Örneğinizi inceleyip anlamaya çalıştım ve hakikaten çok işe yaradı, bence süper bir anlatım, çok teşekkürler.. Devamlı takipçiniz olacağım

  28. # mhmt-rd | 06 Haziran 2007, 21:51 Gravatar

    Ajax çalışma şeklini tam olarak anlamamı sağlayan bir yazıydı. Teşekkürler.

  29. # Mikail ÇOLAK | 25 Temmuz 2007, 23:01 Gravatar

    Merhabalar başlıca bu yazınızın bana yardımı çok oldu minnetarım sayenizde ajaxın mantığını kavrayabildim fakat bir şey kafama takılıyor biz verileri gönderirken post metodunu nasıl kullanabiliriz güvenlik açısından

    Sagılarım ve Teşekkürlerim ile Mikail ÇOLAK

  30. # yakuter | 26 Temmuz 2007, 02:06 Gravatar

    @Merhaba Mikail. Makaleden faydalanmana sevindim. Sorunu tam olarak anlayamadım. Yani post metodu ile güvenlik konusunu biraz daha açar mısın? Eğer kodla göstereyim dersen ajaxnedir gruplarında sor, oradan cevaplayayım. Eğer sorun mantıksa buradan cevaplayabilirim.

  31. # Mikail ÇOLAK | 26 Temmuz 2007, 23:27 Gravatar

    şöyle anlatayım şimdi get metodunu kullanırsak

    http://site.com/kayit.php?user=Mikail&sifre=123456

    kayit.php ye veriler gidecektir ama herşey tarayıcının geçmişinde kayıtlı olarak kalacaktır

    kafamı karıştıran nokta kodlardaki

    //1 —-

    //2 —-
    http.open(’get’, ‘kontrol.php?degisken=’ + deger);
    //———————-

    bunlardı yani get metodunun kullanılması idi ama dün biraz kurcaladım get metodunu ajax ın içinde kullandığımızda tarayıcı geçmişine kayıt edilmiyor fakat

    herşey iyi hoş

    ben geldim ajax ile bütün kontrollerimi yaptım şimdi sıra geldi formu kayit.php ye doğal bi şekilde göndermeye ama ben bunu post metodunu kullanarak yapmam gerekir

    aslında şöyle sorayım

    …javascript:void(0)” method=”get”>

  32. # Hakan | 02 Ağustos 2007, 15:26 Gravatar

    Yakuter ellerine sağlık bu bölümü anlayarak bitirdim.

  33. # N@R | 05 Ağustos 2007, 18:28 Gravatar

    Konuları indirgeyim de yorumları sonra okuyacağım. Vakit kaybediyorum size de tavsiye ederim tabi yeni başlayanlar. İşi öğrenin ki sonra sizde yorumlara güler geçersiniz.
    adam denemeden soru soruyor. Yaw kardeşim boş yorum yapmak için mi doğdunuz sizler yaww. Ne biçim bi yaklaşım sergiliyorsunuz? Allah razı olsun abiler. Saygının en büyüğü sizlerin. Yüreğine sağlık. Sen baş edemezsen bu boş sorularla bana aktar yönetimi…

    Hadi millet eller çalışsın.

  34. # yakuter | 05 Ağustos 2007, 19:16 Gravatar

    #N@R teşekkür ederiz desteğinden dolayı. Artık biz elimizden geleni yapıyoruz. 1 kişiyi bile kazansak sevindirici :)

  35. # Emlak Paketi | 10 Ağustos 2007, 15:26 Gravatar

    Çok başarılı bir makale.

    Başarılarınızın devamını dilerim.

  36. # Kartal | 16 Ağustos 2007, 00:23 Gravatar

    abicim süpersin ya muthiş dersler muthiş hersey…devamını beklioruz..

  37. # nullcoder | 17 Ağustos 2007, 22:59 Gravatar

    makale için tşk.

    kodları kopyala-yapıştır yaptım olmadı, dosyaları indirdim çalıştıramadım acaba wwwroot dizinine mi atmak gerekio çalışması için. dogru yada yanlış yazsamda tıkladığımda bir değişiklik olmuo.. acaba neyi yanlış yapıorum yardım ederseniz sevinirm

    tekrar tşk. saygılar vb :)

  38. # yakuter | 18 Ağustos 2007, 02:04 Gravatar

    aynen dediğin gibi bunu www klasörüne kopyalamalısın. Ayrıca tarayıcıda localhost/ vs. vs. veya 127.0.0.1/ vs. vs. şeklinde adres girerek çalıştırmalısın.

  39. # Emin | 18 Ağustos 2007, 19:26 Gravatar

    Ben gelen değeri textarea’ya nasıl yazdırabilirim.

    Bunu denedim ama gibi taglarıda ekledi

    Lütfen yardım edin. ‘yakuter’

  40. # yakuter | 18 Ağustos 2007, 22:30 Gravatar

    textarea’ya bir id ver. Daha sonra javascript fonksiyonuna document.getElementById(’degisken’).value = gelen deger diyerek veriyi ekleyebilirsin. Daha fazla yardım için ajaxnedir Google Grouplarını kullanırsan sevinirim.
    http://groups.google.com/group/ajaxnedir

  41. # Emin | 19 Ağustos 2007, 10:15 Gravatar

    Öncelikle ilgin için teşekkürler.
    Ben yaptığın bu örneği biraz değiştirmek istedim.
    Ve şöyle yaptım.

    Bir text alanından aldğı id değerini kontrol asp’de veritabanımda arattım.
    Bulunan kaydıda aynen örnekteki gibi bir katmana yazdırdım. Ve katmana sorunsuz yazdı.

    Fakat gelen değeri textarea’ya yazdırmaya çalışınca sorun çıktı. Temel html taglarını yazıyor.
    Sonra body tagı arasınada gelen değeri yazıyor.

    Dediğin gibi document.getElementById(’metin’).value = http.responseText;

    şeklindede denedim fakat metin adlı textarea’ya yine aynı şekilde geliyor.

    Bunun bir çözümü varmı? Eğer yoksa yormayayım seni.

    İlgilendğin için tekrar teşekkürler.

  42. # Emin | 19 Ağustos 2007, 10:17 Gravatar

    Tamam arkadaşlar sorunu çözdüm.

  43. # Deniz | 21 Ağustos 2007, 05:41 Gravatar

    dostum cok sagol ya…. valla ingilizce kaynaklardan bir sozluge bir dokumana bakmaktan bayginlik geldiydi… cok isime yaradi… cok tesekkurler…

    emegine saglik

  44. # Emin | 23 Ağustos 2007, 23:19 Gravatar

    Çok garip bir şey oldu.

    Ben yaptığınız bu işlemi asp’ye uyguladım.
    Sayfadan seçilen kayıtı başka bir sayfaya gitmeden ekrana yazdırıyorum artık.
    (Aslında yaptığım iş gerekli bilgileri bu sayfadan alıp kontorl.asp’de istenilen şeklinde geri vermek)
    Bunu çok rahat bir şekilde yaptım. Artık veritabanımda ki kayıtları bir textarea’da açmak için başk bir sayfaya gitmiyorum.

    Sorun aslında şu… Evde 2 tane bilgisayarımvar (pc,laptop)

    Veri tabanını güncellediğimde gelen verininde güncel olması lazım..

    Fakat pc’de bu olurken laptop’ta olmuyor. Yani kayıtın güncellenmemiş halini gösteriyor.
    laptop’u kapatıp açıyorum yine olmuyor fakat daha sonra olduğunu görüyorum. Veri tabanındaki veriyi güncellediğim halde neden hala eski veriyi gösteriyor. Anlamadım.

    Hani pc’de olmasa olmaz diyecem ama onda oluyor.

    Bunun nedeni ne olabilir.

    Umarım anlatabilmiştimdir.

    Yardımlarınız için teşekkür ederim.

  45. # ihtiyarus | 27 Ağustos 2007, 00:22 Gravatar

    Cehaletimi mazur görün. Bu makale öncesi sizlere bir şeyler sormuştum sanırım burada da cevabın bir kısmını aldım. Ajax dilini yine PHP ile yaratılmış sitelerde kullanabiliyoruz heralde. Yani BLOGGER gibi herşeyine müdahale edemediğimiz sistemlerde ajax dilini kullanma şansımız varmı? Bunu sormamın nedeni zaman zaman JAVASCRİPT uygulamalar kullanıyoruz zaten. Mesela http://lafhane.blogspot.com un headerdaki uygulamayı Google sayfa yaratıcısına Upload edip oradan çağırıp çalıştırdım. Uygulama .svf dosya. Olabilirmi sizce?Sevgiyle kalın.

  46. # sportmeen | 05 Eylül 2007, 00:23 Gravatar

    bu siteyi ve dersleri hazırlayanlardan allah razı olsun sayenizde ajaxı da öğreneceğiz benim sorum şu javascript:void(0) action kısmına yazılmış tam olarak ne işe yarıyor anlayamadım 0 ın bir önemi var mı bilen arkadaşlardan rica ediyorum herkese kolay gelsin

  47. # turunc4u | 15 Eylül 2007, 12:01 Gravatar

    Emeğine sağlık arkadaşım… Ama benim şöyle bir sorunum var ajax ile asp mini sohbet scriptini kurdum http://www.aspindir.com/Goster/4619 Yazıyı yollayamıyor devamlı loading resmi ve tamamlanmıştır yazısı çıkıyor ama yazıyı ekranda gösteremiyor. Ajax ve asp konusunda fazla kaynak yok. Bu yüzden burdan soruyorum Kolay gelsin…

  48. # deniz keskin | 23 Eylül 2007, 06:42 Gravatar

    iyi güzel hoşda benim anlamadığım bir olay var
    kullanıcı üye olacak üye adını yazdi yanidegisken
    bunda herbişeyi kontrol ediyoruz iyi güzel bundan sonra bu uyeadını veya şifresini cinsiyeti ile birlikde nasıl kayıt edeceğiz ?

    asp ile yapdım yani sözünüm kısası
    uyeadını kontrol ettik kontrol.asp de

    şimdi uygun ve kaydet.asp ye göndereceğiz ne yapabiliriz ?

    çünki ben form üzerinde sadece üyeadını kontrol etmek isyiroum

  49. # lookes | 23 Eylül 2007, 22:15 Gravatar

    Merhabalar,
    Öncelikle Elinize Sağlık
    ancak bir kaç arkadaş aynı sorunu yaşamış türkçe karakter problemini nasıl halledebiliriz bu konuda yardımınızı bekliyorum

  50. # SLyther | 01 Ekim 2007, 03:23 Gravatar

    Arkadaşlar Türkçe karakterine kesin çözüm size benden olsun :)

    ASP Kullananlar:

    Sayfanızın başına aşağıdaki kodu eklediğinizde tüm sorun çözümlenmiş olacaktır.

  51. # kuzu | 02 Ekim 2007, 12:59 Gravatar

  52. # kuresel isinma | 26 Ekim 2007, 15:29 Gravatar

    Verdiğiniz bilgiler için çok teşekkürler..

    ihtiyarus arkadaşımızın sorduğu sorunun cevabını verebilirmisiniz acaba ajax uygulamasını blogger da kullanabilirmiyiz?

  53. # şems | 14 Kasım 2007, 14:42 Gravatar

    nefis hazırlanmış, gerizekalı bile anlar

  54. # Burak | 22 Kasım 2007, 17:59 Gravatar

    JSP için türkce karakter sıkıntısının düzeltmesi:

    8859-9 kullanan veya kullanmaya mecbur olan JSP ciler için yukarıdaki asp için kod böyle olacak kısmındaki encodeURI(deger) bolumu kullanılabilir.

    Bu durumda türkce karakter(hem caps hem normal olanlar) degişik biçimlerde gelecektir.
    bunun icinde kücük bir replace fonksiyonu yazmak sanırım kodcu arkadaslar için sorun olmaz.

  55. # burak güder | 02 Aralık 2007, 09:58 Gravatar

    ajax giderek beni içine çekiyor php bilmek bir websitesini alıcı kılmak için yeterli görülmüyor artık ticari olarakta insanlar gördükleri yenlikleri sitelerindede görmek istiyorlar. bunun içinse ajax’a ihtiyaç duyuluyor. HOŞ GELDİN AJAX diyorum ve bu sitenin kurucularına çok teşekkür ediyorum. Türk coderleri ajaxla tanıştırdığı için

  56. # Muhammed | 25 Aralık 2007, 00:28 Gravatar

    Çok yararlı bilgiler tşkler ;)

  57. # Orhun | 31 Aralık 2007, 12:18 Gravatar

    Merhaba hocam ben sizin kodlarınızla oynayarak il - ilçe sekmesi yaptım arkadaşlar inceleyip ne kadar verimli olabilidiğini söylerlerse bu yapıyla dewam etmek istiyorum tabi şu anda database’den veya xml’den çekmiyorum il - ilçeyi sadece örnek olsun diye uyguladım

    http://www.mutlakbegeni.com/forum/forum_posts.asp?TID=37

    buyrun buraya konuyu açmıştım

    msn: turkfox13@hotmail.com yorumlarınızı bekliyorum iyi çalışmalar

  58. # Costello | 21 Şubat 2008, 01:24 Gravatar

    Bu kodlarla uzun zamandır ajax kullanıyorum ben gerçekten ajax için anlatılmış en net örneklerden biri fakat daha önceleri firefox ta çalışan bu kod artık çalışmıyor anlamış değilim bu durumu herkesin iie ile sorunu olur benimde sürekli sorunum firefox la :D

  59. # DiGoXin | 26 Şubat 2008, 12:16 Gravatar

    Bugün işime yaradı. Birkaç gündür aradığımı burada buldum. Kodlar gayet güzel çalıştı. Hatta modifiyemde de sorun çıkmadı. Elinize sağlık.

    Not: Costello nedenini bilemiyorum ama benim kodlarım firefoxta da çalıştı.

  60. # murat kekilli | 05 Nisan 2008, 15:07 Gravatar

    hocam ellerine sağlık cok işime yaradı bu kodlar..

  61. # Caner Özer | 07 Nisan 2008, 13:07 Gravatar

    Türkçe karakter problemini çözmek için kontrol.php dosyasının başına eklemeniz gerekiyor. ASP karşılığını bilmiyorum.

    Not: Ayrıca bu detaylar da ana yazıya eklense (ASP karşılığıyla birlikte) yeni öğrenenler için daha kolay olur sanki. Çünkü yorumlar baya kabarmış, bu kalabalıkta birşey bulmak zor.

  62. # turkfox13 | 15 Nisan 2008, 16:44 Gravatar

    ASP’de Türkçe karakter sıkıntısı çekebilirsiniz post ettiğiniz sayfada
    Response.CharSet = “iso-8859-9″
    bu kod ile sorunu giderebilirsiniz ayrıca
    JQUERY ile ajax kullanın çok kolay 4 satırla post edip cevabı alabiliyorsunuz

  63. # ibrahim | 06 Mayıs 2008, 02:37 Gravatar

    merhabalar öncelikle anlatımınızı çok başarılı bulduğumu söylemek isterim fakat benim takıldığım bir nokta var eğer yardımcı olursanız sevinirim..

    ben bu örneğinizi dropdown form haline çevirdim fakat şöyle bir durum var , elimde 3 adet form var bunlardaki değerlin butona tıkladığında toplanmasını istiyorum bunu nasıl yapabilirim..

  64. # erkan tonbul | 06 Mayıs 2008, 23:58 Gravatar

    Artık ajaxa başlamanın zamanı gelmişti ve bu makale başlamak için çok iyi oldu. Çok direndim ama ajaxda olmassa olmazlardan oldu. Ama dikkat etmek lazım herşeyden önemli olan arama motoru optimizasyonu yapanlar ajaxı doğru yerde gerektiği zaman kullansınlar yoksa google gibi arama motorları sitelerini indexlemez.

  65. # Mehmet CAN | 05 Haziran 2008, 21:30 Gravatar

    çok güzel bir örnek vermişsin. tebrikler. Ancak php dosyasından veri alırken türkçe karakter sorunu olabiliyor. Bunun için php dosyanızın en başına şunları yazmanız yeterlidir.

    iconv_set_encoding(’internal_encoding’, ‘iso-8859-9′);
    iconv_set_encoding(’output_encoding’, ‘iso-8859-9′);
    ob_start(’ob_iconv_handler’);

    bol kodlu günler…

  66. # Murat | 18 Haziran 2008, 07:26 Gravatar

    Çok Güzel Anlatım Ve Örnek’leri Olması Çok Güzel .. İnşALLAH İyi Daha İyi Yere gelirsiniz.

  67. # Siyah Kahve | 01 Temmuz 2008, 03:29 Gravatar

    Anlatım için teşekkürler.

  68. # ilyas | 01 Temmuz 2008, 11:06 Gravatar

    Teşekkürler gerçekten çok iyi anlatmışsın

  69. # taha ipek | 08 Temmuz 2008, 13:30 Gravatar

    bu ajax firefox ta undifend diyor. Tarayıcı uyumluluğunu sağladığım halde 3-4 çeşit kod ile hala devam etmekte :S nasıl çözeceğim bunu :S

    en son ve sağlıklı olan kodum

    function nesneyarat() {
    var nesne;
    var tarayici = navigator.appName;
    if(tarayici == “Microsoft Internet Explorer”){
    nesne = new ActiveXObject(”Microsoft.XMLHTTP”);
    }else{
    nesne = new XMLHttpRequest();
    }

    if ( !nesne && typeof XMLHttpRequest != ‘undefined’ ) {
    try{
    nesne = new XMLHttpRequest();
    }catch(e) {
    nesne = false;
    }
    }

    if ( !nesne && window.createRequest ) {
    try{
    nesne = window.createRequest();
    }catch(e) {
    nesne = false;
    }
    }

    return nesne;
    }

    bu fakat gene hala firefoxta undefind demekte

  70. # ethernet driver | 14 Temmuz 2008, 16:44 Gravatar

    Teşekkürler

  71. # #sercan# | 09 Ağustos 2008, 19:50 Gravatar

    gerçekten cok güzel ve açık bi anlatım..teşekkürler

  72. # karaman | 03 Eylül 2008, 10:27 Gravatar

    emeğinize sağlık

  73. # Gökhan Aygün | 13 Ekim 2008, 22:36 Gravatar

    Mühteşem , olmuş ellerinize sağlık. Bu yöntemi üyelik girişlerinde veri tabanında kontrol etme işleminde yoğun kullanıyorum tabi orda buton yok :D hanı veri girdiği gibi
    [CODE][/CODE] şeklinde

  74. # Cihan | 20 Ekim 2008, 17:44 Gravatar

    Cok tesekkurler, emegine saglik, Allah razi olsun.

  75. # serhat | 07 Kasım 2008, 14:46 Gravatar

    Teşekkürler.

  76. # selcuk | 19 Aralık 2008, 10:59 Gravatar

    hocam ellerinize sağlık cok güzel bi doküman ama benim anlamadığım nokta send fonksiyonu değer gönderir demişsiniz kod bölümünde ise

    “http.send(null);” satırı var .neden?
    teşekkürler

  77. # Fazil | 20 Aralık 2008, 22:31 Gravatar

    Merhaba. Bir sorum olacak.
    Sayafamda döngü içinde div ler oluşturuluyor. Her div in idsi farklı. Yani . şeklinde. Bu divin içine javascript kodunu yazdım(sizin JXP fonksiyonunuzun kodları) Loading foksiyonu da sayfanın başında. div yüklendiğinde loading fonksiyonunu gerekli parametrelerle çağırıyor. Parametreler kontrol.php ye gönderiliyor. kontrol.php bu parametrelere göre veritabanından veriyi alıyor.

    3 satır 3 sütunlu bir tablo düşünün. Sayfa yüklendiğinde her bir hücrenin içinde yukarda bahsettiğim divler var. İlk hücrede , ikinci hücrede … şeklinde. Sayfa yüklendiğinde, bu divlerin içinde önce yükleniyor resmi görünecek, sonra veritabanından alınan bilgi bu dive yazılacak.

    Sorun şurda: Sayfa yüklendiğinde herbir hücrenin içinde yükleniyor yazıyor. Sonra hücrelerden birinin içine veritabanındaki bilgi geliyor. Ancak diğer hücreler hala yükleniyor diye bekliyor. Benim istediğim her bir hücrenin içindeki veriler eşzamanlı olarak veritabanından alınsın.

    Biraz karmaşık oldu kusura bakmayın. Yardımcı olursanız sevinirim

  78. # Fazil | 21 Aralık 2008, 13:08 Gravatar

    SORUNU ÇÖZDÜM! ajaxı senkron kullandım. Şimdi aynı anda veritabanına farklı sorgular gönderebiliyorum.
    Yani 4 tablo hücresinin herbiri veritabanına farklı sorgu gönderip, cevabı hücre içinde gösteriyor. Bunu aynı anda yapıyor.
    Ancak aklıma takılan şu: Asenkron senkron dersine “Eğer 1 nolu istek tamamlanmadan 2 nolu isteğe kesinlikle geçilmemesini istiyorsanız asenkron çalışma size ters düşecektir. ” yazmışsınız. Şekillerde asenkronda tarayıcı ile sunucu arasında aynı anda 4 bağlantı yapılabiliyor görünüyor. Senkronda ise tarayıcı ile sunucu arasında aynı anda sadece tek bağlantı var.
    Bunu yanlış olduğunu düşünüyorum. Çünkü senkronun kelime manası eşzamanlı demek. Sizin anlatımınızda eşzamanlı manası asenkron çalışmada uygulanmış. Senkron ve asenkronu ters anlattığınızı düşünüyorum.
    Bu konuda ne düşünüyorsunuz?

  79. # Fazil | 21 Aralık 2008, 14:54 Gravatar

    Haydaa!
    Şimdi de işlem tamamlanıncaya kadar tarayıcı donuyor?
    Yrdımcı olursanız sevinirim

  80. # mustafa | 03 Ocak 2009, 01:24 Gravatar

    ajax bu yazı ile başladım ve şuan ajax kullanabiliyorum tşkler.

  81. # hüseyin | 11 Ocak 2009, 06:46 Gravatar

    arkadaşlar yukarıda bahsettiğiniz değişkenden bi değer gönderdiğinizde bunu explorer indexliyor ve her seferinde o indexi size geri gönderiyo yani siz sürekli farklı farklı bilgi gönderiyorsunuz am explorer indexlediği için size ilk gönderdiğiniz değişkendeki bilgiyi veriyor ise bunun çok kolay bi yolu var

    random sistemi değişkenni sonuna birde alaksız bir random değeri taşıyan bi değişken daha ekleyin yada bana huseyinsariyar*hotmail adresinden ulaşın size örnek kod göndereyim iyi çalışmalar ben şuan bi chat programı yapıyorum bayada ilerledim bir çok sorunu çözdüm sayılır yardım isteyenler bana ulaşsın byy

  82. # Deniz keskin | 18 Şubat 2009, 23:50 Gravatar

    Değerli arkadaşlar bazılarımıza matıksız gelebilir fakat ben uygulamayı asp ile ilişkilendirmek isteyen kişilerden idim ozamandan buzaman epey ara vermişim nete şimdi döndüm desem yeri uzun laf kalabalığına gerek yok
    1. SORUN BROWSER DESTEĞİNDEN ŞİKAYET EDEN ARKADAŞLAR İÇİN DÜZENLEDİM UYGULAMAYI
    2. SORUN BİR CHEK KULLANILABİLİRLİĞİ DENETLEME GİBİ BİR DÜZENEK HAZIRLADIM
    3. DURUM İKİNCİ BİR FORMA AKTARARAK ASP İLE YOĞURDUM

    UYGULAMAYI :

    BU ADRESTEN TEST EDEBİLİR >>> http://www.yarismaci.somee.com/fajax2/default.asp

    1 BU ADRESTEN EDİNE BİLİRSİNİZ>>www.yarismaci.somee.com/fajax2.zip
    2 YADA BURADAN EDENİNİZ >>>>>>www.fevkialem.com/fajax2.zip

    ESENLİKLER DİLERİM

  83. # hasan armutlu | 26 Şubat 2009, 09:31 Gravatar

    merhabaler; bu açtığınız konu ajax la tanışmama vesile olmuştu. çok işimede yaradı bu kodlar. çok yerde kullandım.

    fakat kullanırken karşılaştığım bir sıkıntı oldu.. onu parylaşmak istiyrum sizinle… ve bir çözümü varsa yardım bekliyorum…

    2 adet sayfam olduğunu düşünün, master.asp ve detay.asp gibi…. master.asp nin içine islemkutu(’detay.asp’) diyerek detay bilgileri çekiyorum diyelim… sayfa içindeki ASP kodlar falan çok güzel çalışıyor bi sorun yok fakat detay sayfasının içine [script] alert(”sdsdfg”); [/script] gibi ufacık bir script kodu dahi yazsam çalışmıyor; yani detay ın içindeki script ler çalışmıyor bi türlü… bunu kullanmak için bir yol varmı acaba?????

    yardımcı olursanız çok sevinirim..

  84. # Mustafa | 24 Mart 2009, 14:39 Gravatar

    Benim için çok iyi bir kaynak oldu.
    Teşekkürler…

  85. # Erman CEYLAN | 30 Mart 2009, 23:43 Gravatar

    Öncelikle emeğinize sağlık. Ajax’a yeni başlayanlardanım tamamen anlayamasamda makale için tekrar teşekkürler.

  86. # erkan | 20 Nisan 2009, 23:22 Gravatar

    Eline Saglık Fakat oldu olucak Post yönteminide anlatsaydınız Hocam.Ben mesala Post ile yollamak istiyorum ama okadar cooooooooooooooooook araştırdımki sizin gibi düzenli anlatan yok birde asp üzerine anlatırsanız tekrar seviniriz tsk ederim hersey icin

  87. # ales | 25 Nisan 2009, 14:41 Gravatar

    kesinlikle bir yerde hata yapıyorum ama nerede :s

Yorum yazın

sayfa sayacı