05 Eyl

jQuery ve AJAX işlemleri

Kategori: Genel
jQuery ve AJAX işlemleri

jqueryYazıyı eBurhan‘ın sitesindeki şu konuda gördüm ve eklemek istedim. Bu yazıda kütüphanesi ile işlemlerinin nasıl yapıldığından bahsedeceğim. Prototype ve MooTools kütüphanelerini de kullanmış biri olarak size söyleyebilirim ki işlemlerinin en kolay ve esnek bir şekilde ile yapılabildiğini gördüm. Eminim ki yazının sonunda bu konuda bana hak vereceksiniz, çünkü gerçekten ile bir işlemi yapmak çok kolay.

  Bu konuyu resmi dökümanında olduğu gibi 3 başlık altında anlatmak istiyorum:

  1. istekleri
  2. olayları
  3. yardımcıları

1. istekleri

Bir isteği oluşturmak için $.() fonksiyonundan faydalanıyoruz. Yapacağımız işlemin türüne göre bu fonksiyona farklı farklı seçenekler belirtmek durumundayız. Bu seçeneklerden en temel olanlarını kısaca inceleyelim:

  • type: Bir web sayfasına yapılacak olan isteğin türünü belirler. GET veya POST olmak üzere iki farklı değerden birisini almalıdır.
  • url: istek yapılacak sayfayı belirtmenizi sağlar. google-backlink.php gibi…
  • data: istek yapılan sayfaya herhangi bir bilgi gönderecekseniz bu bilginin ne olduğunu belirtmenizi sağlar. Örneğin google-backlink.php isimli bir sayfaya url=www.eburhan.com bilgisini göndermek için bu seçeneği kullanmalıyız.
  • success: yapmış olduğumuz isteğin başarılı olup olmadığını kontrol etmemizi sağlar. Örneğin yapılan başarılı bir istek sonucunda geri dönen cevabı işlemek için bu seçeneği kullanabiliriz.

$.() fonksiyonundan ve onun alabileceğini seçeneklerden de bahsettiğimize göre artık bunların nasıl kullanıldığına geçelim. Örnek uygulamamızda “google-backlink.php” sayfasına “url=www.eburhan.com” bilgisini GET yöntemi ile gönderip sonucu alacağız. Aldığımız sonucu ise ID özniteliği “sonuc” olan DIV etiketi içerisinde göstereceğiz.

 

$.({
	type: 'GET',
	url: 'google-backlink.php',
	data: 'url=www.eburhan.com',
	success: function(ajaxCevap) {
		$('#sonuc').html(ajaxCevap);
	}
});

 

Bu örnek uygulamanın çalışır halini Örnek 1A sayfasında bulabilirsiniz.

ile isteği oluşturmanın çok daha kısa yolları da vardır. Bu yollar $.get() ve $.post() fonksiyonlarından geçiyor. Fonksiyon isimlerinden de anlaşılacağı üzere GET türünde bir istek için $.get() fonksiyonunu, POST türünde bir istek için $.post() fonksiyonunu kullanabiliriz. Bir önceki örnek uygulamanın $.get() fonksiyonu ile nasıl yapılabileceğini görelim:

 

$.get(
	'google-backlink.php',
	{url: 'www.eburhan.com'},
	function(ajaxCevap){
    	$('#sonuc').html(ajaxCevap)
	}
);

 

$.get() fonksiyonunda öncelikle istek yapılacak sayfayı, daha sonra ise bu sayfaya gönderilecek bilgiyi belirtiyoruz. Sonra da geri dönen cevabı bir fonksiyon içerisinde işliyoruz. Çalışır halini Örnek 1B sayfasında görebilirsiniz.

Şimdi de herhangi bir web sayfasının içeriğini kendi web sayfamıza kolayca entegre edebilmemizi sağlayan $.load() fonksiyonunu inceleyelim. Örneğimizde “delicious-eburhan.php” diye bir dosyamız olsun. Bu dosyanın görevi, Del.icio.us isimli dünyaca ünlü sosyal imleme sitesinde saklamış olduğum son 10 bağlantıyı göstermek olsun. Biz bu gösterimi $.load() fonksiyonu ile kendi sayfamızda yer alan DIV etiketi içerisinde yapacağız.

 

$('#sonuc').load('delicious-eburhan.php');

 

İşte bu tek satırlık kod yardımıyla “delicious-eburhan.php” dosyasının tüm içeriğini web sayfamızdaki DIV etiketi içerisine yüklemiş oluyoruz. Gerçekten kolay değil mi? Bu örneğin çalışır halini Örnek 1C sayfasında bulabilirsiniz.

sayfayı ayır

2. olayları

Bu yazının başındaki örnekte (Örnek 1A) success isimli bir seçenek kullanmıştık. Bu seçeneğin görevi, bir isteği başarılı olarak tamamlandıktan sonra bizim herhangi bir işlem yapabilmemizi sağlamaktı. Bu seçeneği her isteğinde kullanmak için her defasında belirtmemiz gerekiyor. Oysaki biz böyle tekrarlara düşmeyelim diye bize “ olayları” diye bir olanak sunmuş. Alttaki örneğe bakalım:

 

$("#sonuc").ajaxSuccess(function(){

	$(this).html(' isteği başarılı');

});

Bu örnekte, web sayfamızdaki bütün istekleri başarıyla sonuçlandığı zaman ID özniteliği “sonuc” olan bir elemanın içerisine “ isteği başarılı” mesajı yazılacaktır. Yani ayrıyeten herbir $.() fonksiyonu içerisinde belirtmemize gerek kalmamıştır.
Örneği test etmek için Örnek 2A sayfasına bakabilirsiniz.

kütüphanesi içerisindeki olayları şöyledir:

  • ajaxComplete: bir isteği tamamlandığında
  • ajaxError: bir isteği başarısız olduğunda
  • ajaxSend: bir isteği gönderilmeden önce
  • ajaxStart: bir isteği başladığında
  • ajaxStop: bir isteği durdurulduğunda
  • ajaxSuccess: bir isteği başarıyla tamamlandığında

Küçük bir örnekle de olayları konusunu geçmek istiyorum. Hepiniz kullanan web sitelerinde bunlar gibi yükleniyor (loading) resimleri görmüşsünüzdür. İşte böyle birşey oluşturmak için ajaxStart isimli olayı kullanabiliriz. Böylece herhangi bir isteği başladığında web sayfanızın bir yerinde yükleniyor resmi gösterebilirsiniz

 

$("div#yukleniyor").ajaxStart(function(){

	$(this).html('<img src="yukleniyor.gif" />');

});

 

Bu örneğin uygulamasını da Örnek 2B sayfasında görebilirsiniz.

sayfayı ayır

3. yardımcıları

Bu başlık altında ajaxSetup() ve serialize() isimli iki fonksiyonu inceleyeceğiz.

Yardımcı fonksiyonlar sayesinde işlemlerini daha da kolaylaştırabilirsiniz. Örneğin web sayfanızda birden fazla $.() fonksiyonu kullanmışsınız fakat bu fonksiyonun bazı seçenekleri hep tekrar etmiş. Oysaki ajaxSetup() yardımcısı ile bu tekrar eden seçenekleri baştan belirleyebiliyoruz. Böyle olunca da her $.() fonksiyonuna aynı seçenekleri tekrar tekrar girmekten kurtulmuş oluruz.

 

$.({
	type: 'GET',
	url: 'google-backlink.php',
	data: 'url=www.eburhan.com',
	success: function(ajaxCevap) {
		$('div#sonuc').html(ajaxCevap);
	}
});

 

 

$.({
	type: 'GET',
	url: 'google-backlink.php',
	data: 'url=www.yakuter.com',
	success: function(ajaxCevap) {
		$('div#sonuc').html(ajaxCevap);
	}
});

 

Şimdi yukarıdaki iki koda bakalım. Bu kodların ikisi de aynı web sayfasında bulunuyor. Dikkat ettiyseniz “type”, “url” ve “success” seçenekleri her ikisinde de ortak. Oysaki ajaxSetup() yardımcısı ile bu ortak ifadelerin tek bir yerde toplanması sağlanabiliyor. Böylece kodlarımız daha temiz görünüyor.

 

$.ajaxSetup({
	type: 'GET',
	url: 'google-backlink.php',
	success: function(ajaxCevap) {
		$('div#sonuc').html(ajaxCevap);
	}
});

 

 

$.({ data: 'url=www.eburhan.com' });
$.({ data: 'url=www.yakuter.com' });

 

Böylesi daha iyi değil mi Test etmek isterseniz Örnek 3A sayfasına bakabilirsiniz.

Şimdi de form alanlarında sıklıkla kullanacağımız serialize() yardımcısına geçelim. Bu yardımcı sayesinde bir forma girilen bütün bilgiler sorgu cümleciği (query string) haline otomatik olarak dönüştürülürler. Bu sorgu cümleciğini herhangi bir sayfaya bilgi gönderirken kullanırız. Şimdi alttaki gibi basit bir formumuz olduğunu varsayalım:

 

<form method="post" action="form-isle.php">
  <p>İsim: <input type="text" name="isim" /></p>
  <p>Site: <input type="text" name="site" /></p>
  <p>Şehir:
     <select name="sehir">
     <option value="izmir">İzmir</option>
     <option value="istanbul">İstanbul</option>
     <option value="ankara">Ankara</option>
     </select>
  </p>
  <p><button type="submit">Formu Serileştir</button></p>
</form>

 

Girilen örnek bilgilerle beraber bu kodların ekran görüntüsü alttaki gibi olacaktır:

form

Şimdi de serialize() yardımcısını kullanarak bu formdaki bilgileri bir sorgu cümleciği haline dönüştüren kodu yazalım:

 

$('form).serialize();

 

Bu kodu çalıştırdığınızda altaki gibi bir sorgu cümleciği elde etmiş olacaksınız. Kendiniz test etmek isterseniz Örnek 3B sayfasına da bakabilirsiniz.

 

isim=Erhan&site=eburhan.com&sehir=izmir

 

Artık serialize() yardımcısı ile oluşturduğumuz bu sorgu cümleciğini istediğimiz gibi kullanabiliriz. Özellikle de bir formdaki bilgileri kullanarak bir isteği yaptığımızda bu yardımcı işimizi çok kolaylaştıracaktır. Öyleyse bir isteğinde bu yardımcı nasıl kullanıyor ona da bakalım ve bu yazıya da son noktayı koymuş olalım

 

$.({
	type: 'POST',
	url: 'form-isle.php',
	data: $('form').serialize(),
	success: function(ajaxCevap) {
		$('#sonuc').html(ajaxCevap);
	}
});

 

NOT: yazıdaki örnek uygulamaları buradan indirebilirsiniz.

, ,


“jQuery ve AJAX işlemleri” konusuna yanıtlar...

  1. Şimdiye kadar okuduğum en temiz ajax anlatımı olmuş.. Tebrikler.. ;)

  1. Hiç Trackback Yok.

Konuya yorum yap

zerq.de 2009-2010 © - Powered by WordPress
Tasarım: ZeRQ, Kodlama & WordPress Entegrasyon: Hüseyin Emanet