onreadystateschange etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
onreadystateschange etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

10 Eylül 2013 Salı

Merhaba arkadaşlar bu yazımda kendi oluşturduğumuz json dosyasından nasıl verileri çekebileceğimizi anlatıcam . İlk önce bir json dosyası oluşturalım . Ben .txt uzantılı bir json dosyası oluşturuyorum .

 {  
   "k1":{  
      "kullanici" : "Ahmet" ,  
      "yas"          : "22" ,  
      "sehir"   : "Ankara"  
      },  
      "k2":{  
      "kullanici" : "Ayşe" ,  
      "yas"          : "29" ,  
      "sehir"   : "İzmir"  
      },  
      "k3":{  
      "kullanici" : "Jhon" ,  
      "yas"          : "25" ,  
      "sehir"   : "Barcelona"  
      }  
 }  

İstediğimiz kadar kullanıcı ekleyebiliriz . Ben şimdilik 3 tane ekliyorum . Şimdi index dosyamızı yazalım . Gereken html taglarımızı açalım . Body içerisinede id 'si istediğiniz bir isim olan bir div açalım .

<html>  
      <head>  
           <script type ="text/javascript">  
           </script>  
      </head>  
      <body>  
           <div id="results"></div>  
      </body>  
 </html>

Yaptıktan sonra script taglarımızın içine ajax isteğimizi başlatalım .

function ajax_get_json(){  
                     var hr = new XMLHttpRequest();  
                     hr.open("GET","json.txt","true");  
                     hr.setRequestHeader("Content-type","application/json",true);  
                     hr.onreadystatechange = function (){  
                          if(hr.readyState == 4 && hr.status == 200 ) {  
                               var data = JSON.parse(hr.responseText);  
                               var results = document.getElementById("results");  
                               //results.innerHTML = ("Kullanici :"+data.kullanici + " <br/> Yaş : " + data.yas+ " <br/> Şehir : " + data.sehir);  
                               for (var obj in data) {  
                                    results.innerHTML += data[obj].kullanici +" "+ data[obj].yas + " yaşında " +data[obj].sehir + " yaşıyor . <hr/>" ;  
                               }  
                          }  
                     }  
                     hr.send(null);  
                     results.innerHTML =""  
                }  


Teker teker satırları inceleyelim.

İlk olarak bir fonksiyon oluşturalım. XMLHttpRequest xml nesnemi kullanarak bir hr adından bir obje oluşturuyorum . XMLHttpRequest ' i kullanmamın amacı gereksiz kodlamadan kurtamasıdır . Developerlar arasında bir rüya olarak adlandırılır. Gelelim ne işe yaradığına

- Web sayfalarını yeniden yüklemeye gerek kalmadan günceller.
- Sayfa yüklendikten sonra serverdan veri istegi gönderir .
- Sayfa yüklendikten sonra serverdan veri alır .
- Arkaplanda servera veri gönderir.

hr nesne oldugundan XMLhttpRequest 'in metodlarını kullanabilirim . open metodumu kullanarak gereken detayları yazıyorum .

 hr.open("GET","json.txt","true"); 

hr.open(method,url,async);  

Type get olucak belirtilen Url 'den verileri almamız için . URL : json.txt ve async : true yapıyoruz . True ile belirtilen http istegi eş zamanlı olarak işlenir.

 hr.setRequestHeader("Content-type","application/json",true); 

 setRequestHeader(header,value,async) 

header : belirtilen header adı
value : belirtilen header değeri , bizim değerimiz json

 hr.onreadystatechange = function (){  
 }  

onreadystateschange her an değişen readystates özellikleri fonksiyon olarak depolar.

if(hr.readyState == 4 && hr.status == 200 ) { 

readystates : 0 ile 4 arasında değişen XMLHttpRequest durumlarını tutar.

0 : istek başlatılamadı . (request not initialized )
1 : server iletişim kuruldu. (server connection established)
2 : istek alındı . (request received )
3 : istek işleniyor. (processing request )
4 : istek bitirildi ve cevap hazır (request finished and response is ready)

status :

200 : "OK"
404 : Sayfa bulunamadı (Page not found)

onreadystateschange olayı ile server cevabı işlenmeye hazır olduğunda neler olacağını belirtiyoruz .

readystates : 4 ve status : 200 olduğunda cevap hazır duruma geliyor.

 var data = JSON.parse(hr.responseText); 

data adında bir değişken oluşturuyoruz ve bu değişkene string olarak parse ediceğimiz JSON ' ı atyoruz.

var results = document.getElementById("results");  

results adında bir değişken oluşturuyorum ve bu değişkenime id'si result olan div e ulaşmasını sağlıyoruz . Artık results değişkenim ile div 'in içindeyim .

for (var obj in data) {  
           results.innerHTML += data[obj].kullanici +" "+ data[obj].yas + " yaşında " +data[obj].sehir + " yaşıyor . <hr/>" ;  
                     }  


result degişkenimle div'im içine obj değişkeni kullanarak verilerimi html olarak yazdırıyorum .

hr.send(null);

herhangi bir değer göndermeyeceğimizden null yapıyoruz.

Böylece kodlamamız bitmiştir . Unutmadan belirteyim yerel bir sunucuda kodları çalıştırmalıyız.Ajax işlemleri kullandığımızdan .

Umarım yararlı olmuştur . İyi çalışmalar...








Subscribe to RSS Feed Follow me on Twitter!