<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>JSTürk &#187; Dersler</title>
	<atom:link href="http://jsturk.com/kategori/ders/feed/" rel="self" type="application/rss+xml" />
	<link>http://jsturk.com</link>
	<description>JavaScript'in Türkçesi</description>
	<lastBuildDate>Fri, 15 Jan 2010 07:58:20 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.3</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Firebug ile debug kodlarının IE&#8217;de hata vermesini engellemek</title>
		<link>http://jsturk.com/ders/firebug-ile-debug-kodlarinin-iede-hata-vermesini-engellemek/</link>
		<comments>http://jsturk.com/ders/firebug-ile-debug-kodlarinin-iede-hata-vermesini-engellemek/#comments</comments>
		<pubDate>Fri, 30 Jan 2009 14:27:39 +0000</pubDate>
		<dc:creator>Murat Çorlu</dc:creator>
				<category><![CDATA[Dersler]]></category>
		<category><![CDATA[Firebug]]></category>
		<category><![CDATA[Firefox]]></category>
		<category><![CDATA[Internet Explorer]]></category>

		<guid isPermaLink="false">http://jsturk.com/?p=41</guid>
		<description><![CDATA[Firebug, javascript uygulama geliştiricileri için hala en ideal hata yakalama aracı(debugger). Javascript kodlarımızda console.log metoduyla nesnelerimizi ve dizilerimizi firebug konsoluna göndererek incelemek büyük bir nimet.

Ancak Firebug sadece Firefox&#8217;da çalışan bir eklendi ve Internet Explorer console.log metodunu algılamadığından bu hata ayıklama kodlarımız IE&#8217;de Javascript hatalarının oluşmasına neden oluyor. Siz de benim gibi uygulamalarınızı test ederken yaptığınız [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://getfirebug.com/">Firebug</a>, javascript uygulama geliştiricileri için hala en ideal hata yakalama aracı(debugger). Javascript kodlarımızda console.log metoduyla nesnelerimizi ve dizilerimizi firebug konsoluna göndererek incelemek büyük bir nimet.</p>
<p><a href="http://getfirebug.com/"><img class="alignnone size-full wp-image-42" title="Firebug Logo" src="http://jsturk.com/wp-content/uploads/2009/01/firebug_logo.jpg" alt="Firebug Logo" width="457" height="166" /></a></p>
<p>Ancak Firebug sadece Firefox&#8217;da çalışan bir eklendi ve Internet Explorer console.log metodunu algılamadığından bu hata ayıklama kodlarımız IE&#8217;de Javascript hatalarının oluşmasına neden oluyor. Siz de benim gibi uygulamalarınızı test ederken yaptığınız kodlamaların firefox dışındaki tarayıcılarda hatalara problemlere sebebiyet vermemesine önem verenlerdenseniz, bu problemi önemsemişinizdir.</p>
<p>Ben bu problemi aşağıdaki küçük kod parçacılığıyla çözdüm:</p>
<pre class="brush: js">Konsol = {
  fb: (window.console &amp;&amp; window.console.firebug),
  log: function(what){
    var args = this.log.arguments;
    if(this.fb){
      window.console.notifyFirebug(args,&#039;log&#039;,&#039;firebugAppendConsole&#039;);
    }
  }
};</pre>
<p>Bu nesneyi kullanarak javascript kodlarınızda console.log yerine Konsol.log metodunu kullanabilirsiniz.</p>
<pre class="brush: js">Konsol.log(&#039;bunu yazdır&#039;);</pre>
<p>Bu kullanımın size ekstradan kattığı şey console.log kullanımının IE&#8217;de veya firebug yüklü olmayan Firefox tarayıcılarında javascript hatasına sebebiyet veriyor olmasına rağmen Konsol.log kullanımının bu hataya sebebiyet vermeyecek olmasıdır. Zira kodun 2. satırında görüleceği üzere sistemin console yazılımını destekleyip desteklemediği kontrol ediliyor ve eğer destekliyorsa parametreler console.log&#8217;a gönderiliyor.</p>
<p>Faydalı olması dileğiyle&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://jsturk.com/ders/firebug-ile-debug-kodlarinin-iede-hata-vermesini-engellemek/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Prototype JS ile AJAX form hazırlamak</title>
		<link>http://jsturk.com/ders/prototype-js-ile-ajax-form-hazirlamak/</link>
		<comments>http://jsturk.com/ders/prototype-js-ile-ajax-form-hazirlamak/#comments</comments>
		<pubDate>Tue, 23 Dec 2008 00:20:37 +0000</pubDate>
		<dc:creator>Murat Çorlu</dc:creator>
				<category><![CDATA[Dersler]]></category>
		<category><![CDATA[AJAX]]></category>
		<category><![CDATA[Prototype]]></category>

		<guid isPermaLink="false">http://jsturk.com/?p=10</guid>
		<description><![CDATA[Prototype Framework'ü kullanarak basit bir AJAX form yapımını inceliyoruz]]></description>
			<content:encoded><![CDATA[<p><abbr title="Asynchronous JavaScript and XML"><strong>AJAX</strong></abbr> teknolojisinin Web&#8217;i kasıp kavurmasının temel sebebi, internet gezginlerinin AJAX uygulamalarını kullanmaktan duyduğu hazdır. Zira AJAX, kullanıcılarına sayfa sayfa içeriğe ulaşmaya çalışıp gereksiz içerikler arasında kaybolmak yerine, hedefe yönelik, hızlı ve kullanımı kolay bir yol sunar. Bu yüzden AJAX teknolojisi, biz Javascript kodlayıcıları için, artık yeri geldiğinde kullanılması farz olan bir yöntem haline gelmiştir. Bu derste de, temel bir AJAX kullanımına, AJAX form gönderimine değineceğiz.</p>
<p><a href="http://prototypejs.org">Prototype JS framework</a>&#8216;ünü kullanarak bir AJAX form hazırlayacağız. Formumuzun çalışır halinin görünümü aşağıdaki gibi olacak:</p>
<p><a href="http://jsturk.com/test/prototype-ajax-form-ornek/"><img class="alignnone size-full wp-image-12" title="Prototype JS ile AJAX Form Örneği" src="http://jsturk.com/wp-content/uploads/2008/12/prototype-ajax-form-ornek.gif" alt="Prototype JS ile AJAX Form Örneği" width="560" height="249" /></a></p>
<p>Formumuzun XHTML kodunu çıkararak işe başlayalım:</p>
<pre class="brush: html">
      &lt;form id=&quot;ornek_form&quot; action=&quot;test.php&quot; method=&quot;post&quot;&gt;
          &lt;p&gt;&lt;label for=&quot;isim&quot;&gt;İsim :&lt;/label&gt;&lt;input id=&quot;isim&quot; type=&quot;text&quot; name=&quot;isim&quot; /&gt;&lt;/p&gt;
          &lt;p&gt;&lt;label for=&quot;mesaj&quot;&gt;Mesaj :&lt;/label&gt;&lt;textarea id=&quot;mesaj&quot; cols=&quot;30&quot; rows=&quot;5&quot;&gt;&lt;/textarea&gt;&lt;/p&gt;
          &lt;p class=&quot;submit&quot;&gt;&lt;input type=&quot;submit&quot; value=&quot;Gönder&quot; /&gt;
      &lt;/form&gt;
</pre>
<p>Görüldüğü üzere formumuzda basit 2 adet alan var; isim ve mesaj adlı alanlar. Form içinde herhangi bir yere Javascript kodu yazmadığımıza da dikkatinizi çekiyorum. Burada Javasript kodumuz için önemli olan formumuza verdiğimiz &#8220;ornek_form&#8221; id&#8217;sidir.</p>
<p>Bu formda &#8220;Gönder&#8221;e bastığımızda form elemanlarına yazdıklarımız test.php dosyasına post edilecektir.  Bu işi AJAX&#8217;a dönüştürmek için yapmamız gereken, form gönderilmek istendiğinde Javascript ile araya girerek, sayfanın test.php&#8217;ye gitmesi yerine, bizim Javascript ile form verilerini arkaplanda test.php&#8217;ye gönderip sonucu sayfada göstermemizdir. Bunun için öncelikle form gönderildiğinde Javascript ile nasıl araya gireceğimize bakalım:</p>
<pre class="brush: js">
document.observe(&#039;dom:loaded&#039;,function(olay){
   $(&#039;ornek_form&#039;).observe(&#039;submit&#039;,form_gonder);
});
</pre>
<p>Prototype&#8217;ın observe metodu, bir olaya fonksiyon atamaya yaramaktadır. Biz de burada dokümanımızın &#8220;loaded&#8221; yani &#8220;yüklendi&#8221; olayına bir fonksiyon atıyoruz. Böylece sayfamız tamamen yüklendiğinde bu fonksiyonumuz çalıştırılıyor. Fonksiyonumuzun içeriğine baktığımızda da $(&#8217;ornek_form&#8217;) ile aldığımız formumuzun (Prototype&#8217;de $ fonksiyonu, parametre olarak gönderilen metindeki id&#8217;ye sahip HTML elemanını verir) &#8220;submit&#8221; yani &#8220;gönder&#8221; olayına, yine observe metoduyla &#8220;form_gonder&#8221; adlı bir fonksiyon atıyoruz. Böylece formumuz bir şekilde submit edilmeye çalışıldığında öncelikle bizim form_gonder fonksiyonumuz çalışacak.</p>
<p>Şimdi de form_gonder fonksiyounumuzun nasıl göründüğüne bakalım:</p>
<pre class="brush: js">
function form_gonder(submit_olay){
   // Fonksiyona gönderilen olay parametresinden form elemanımızı öğreniyoruz
   var form = Event.element(submit_olay);

   /* Form elemanlarının present metodu içeriklerinin var olup olmadığını kontrol eder.
   Bu satırda iki alanımızın da içeriği girilmiş mi diye kontrol ediyoruz */
   var gecerli = form.isim.present() &amp;amp;amp;&amp;amp;amp; form.mesaj.present();

   var durum_kutusu = $(&#039;durum_gostergesi&#039;);
   durum_kutusu.removeClassName(&#039;mesaj_basarili&#039;);
   durum_kutusu.removeClassName(&#039;mesaj_hata&#039;);
   durum_kutusu.addClassName(&#039;mesaj_islem&#039;);

   if(gecerli){

      durum_kutusu.update(&#039;Form gönderiliyor...&#039;).show();

      form.request({
         onSuccess: function(sonuc){
            durum_kutusu.update(&#039;Tebrikler! Form gönderildi...&#039;).removeClassName(&#039;mesaj_islem&#039;).addClassName(&#039;mesaj_basarili&#039;);
         },
         onFailure: function(sonuc){
            durum_kutusu.update(&#039;Bir hata oldu!&#039;).removeClassName(&#039;mesaj_islem&#039;).addClassName(&#039;mesaj_hata&#039;);
         }
      });
   }else{
      durum_kutusu.update(&#039;Tüm alanların doldurulması zorunludur!&#039;).show().removeClassName(&#039;mesaj_islem&#039;).addClassName(&#039;mesaj_hata&#039;);
   }

   // Formun submit işlemini durduruyoruz ki, bulunduğumuz sayfada kalalım
   Event.stop(submit_olay);
}
</pre>
<p>Fonksiyonumuza öncelikle form elemanımızı teşhis ederek başlıyoruz. formu_gonder fonksiyonumuzu tetikleyecek şeyin Prototype&#8217;ın &#8220;observe&#8221; metodu olduğunu hatırlatarak, bu metodun çağırdığı fonksiyonlara oluşan olayın objesini parametre olarak gönderdiğini bilmelisiniz. Bu objeden de Event.element() metoduyla olayın oluştuğu elementi öğrenebiliyoruz.</p>
<p>Aradaki bazı kontroller ve mesajı göstereceğimiz div&#8217;le ilgili hazırlıklardan sonra asıl işlemi 14. satırdan itibaren yapmaya başlıyoruz. Formumuzun kontrollerden geçtiğini gördükten sonra durum mesajı kutumuza yüklemeye başladığımız bilgisini yazıp form elemanımızın <strong><a href="http://prototypejs.org/api/form/request">request</a></strong> metodunu çalıştırıyoruz. Bu metod Prototype&#8217;ın form elemanlarını AJAX ile gönderip sonucunu almamızı sağlayan bir metodu. Bu metod Prototype&#8217;ın AJAX objesinin bütün özelliklerini desteklemekle birlikte form elemanına özgü de bazı kolaylıklar sunuyor. Örneğin, request metodu, formun action adresinden formun gönderileceği sayfayı otomatik olarak okuyor. Tabi isterseniz bu değeri değiştire de biliyorsunuz:</p>
<pre class="brush: js">
form.request({ url: &#039;baska_adres.php&#039; });
</pre>
<p>Bununla birlikte form&#8217;un request metodu form elemanlarının değerlerini de otomatik olarak AJAX parametrelerine çeviriyor. Burada kullanmadığımız iki önemli özelliği de şöyle belirtelim:</p>
<pre class="brush: js">
form.request({
   parameters: {isim: &#039;Murat&#039;, numara: 12}, // Gönderilecek verilere ek parametreler
   method: &#039;get&#039;  // Gönderim metodu. Varsayılan olarak post&#039;dur.
});
</pre>
<p>Formun request metoduna olay dönüt fonksiyonları da atanabiliyor. Örneğimizde onSuccess (Başarılı olduğunda) olayına yazdığımız fonksiyonla ekrana formun gönderildiği mesajını yazdırabiliyor, onFailure (Başarısız olduğunda) olayına yazdığımız fonksiyonla da ekrana hata mesajı çıkartabiliyoruz.</p>
<p>Burada son önemli nokta da formu_gonder fonksiyonumuz işlemini bitirmeden önce form submit olayının durdurulması gerektiğidir. Zira bu işlem yapılmazsa AJAX talebi yapıldıktan hemen sonra form&#8217;un doğal submit işlevi de çalışarak tarayıcıyı formun action adresine gönderecek, dolayısıyla AJAX talebimiz manasızlaşacaktır. Bu işlemi de <strong>Event.stop(submit_olay);</strong> satırıyla hallediyoruz.</p>
<p>Böylece temel manada bir AJAX formumuzu çalışır hale getirmiş oluyoruz. AJAX uygulamalarıyla ilgili çok geniş çalışma konuları mevcut. Ancak hepsinde başarı, iyi bir başlangıçla gelebilir. Sanırım, bu yazı, temel manada yardımcı olacaktır.</p>
<p>Örneğin çalışan hali: <a href="http://jsturk.com/test/prototype-ajax-form-ornek/">http://jsturk.com/test/prototype-ajax-form-ornek/</a></p>
<h3>Daha fazla okuma:</h3>
<ul>
<li><a href="http://prototypejs.org/api/ajax/request">Ajax.request</a></li>
<li><a href="http://prototypejs.org/learn/introduction-to-ajax">Introduction to Ajax</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://jsturk.com/ders/prototype-js-ile-ajax-form-hazirlamak/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
