<?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; Prototype</title>
	<atom:link href="http://jsturk.com/konu/prototype/feed/" rel="self" type="application/rss+xml" />
	<link>http://jsturk.com</link>
	<description>JavaScript'in Türkçesi</description>
	<lastBuildDate>Fri, 22 Oct 2010 08:52:54 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Javascript Kopya Kağıtları (Cheatsheets)</title>
		<link>http://jsturk.com/arac/javascript-kopya-kagitlari-cheatsheets/</link>
		<comments>http://jsturk.com/arac/javascript-kopya-kagitlari-cheatsheets/#comments</comments>
		<pubDate>Sat, 16 May 2009 15:25:43 +0000</pubDate>
		<dc:creator>Murat Çorlu</dc:creator>
				<category><![CDATA[Araçlar]]></category>
		<category><![CDATA[cheatsheet]]></category>
		<category><![CDATA[Dojo]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[kopya kağıtları]]></category>
		<category><![CDATA[Mootools]]></category>
		<category><![CDATA[Prototype]]></category>
		<category><![CDATA[YUI]]></category>

		<guid isPermaLink="false">http://jsturk.com/?p=51</guid>
		<description><![CDATA[Kopya Kağıtları (Cheasheets), bir çok web uygulama geliştiricisinin kullandığı araçlar. Çünkü diller ve framework&#8217;ler o kadar çok özellik ve metod &#8230; <a href="http://jsturk.com/arac/javascript-kopya-kagitlari-cheatsheets/" class="more-link">Learn more</a>]]></description>
			<content:encoded><![CDATA[<p><strong>Kopya Kağıtları (Cheasheets)</strong>, bir çok web uygulama geliştiricisinin kullandığı araçlar. Çünkü diller ve framework&#8217;ler o kadar çok özellik ve metod içeriyorlar ki bunların hepsinin ezberde tutulması hem zor hem de gereksiz.</p>
<p><img class="alignnone size-medium wp-image-59" title="Cheatsheet" src="http://jsturk.com/wp-content/uploads/2009/05/cheatsheet-229x300.png" alt="Cheatsheet" width="137" height="180" /></p>
<p>İşte bu durumda imdadımıza kopya kağıtları yetişiyor. &#8220;addClass mıydı, addClassName miydi?&#8221;, &#8220;ilk parametre mi dizi olacaktı ikinci parametre mi?&#8221; gibi sıkça kafamız karıştığı zamanlarda hemen Google&#8217;da arama yapmak yerine masamızın üzerindeki tek sayfalık kopya kağıdımıza bakmak çok daha hızlı ve verimli olacaktır.</p>
<p><span id="more-51"></span>İşte size Javascript uygulama geliştiricilerinin çok işine yarayacak bazı kopya kağıtlarını sunuyoruz:</p>
<div id="attachment_52" class="wp-caption alignnone" style="width: 490px"><img class="size-full wp-image-52" title="Javascript Cheatsheet" src="http://jsturk.com/wp-content/uploads/2009/05/javascript-cheatsheet.gif" alt="Javascript Cheatsheet" width="480" height="165" /><p class="wp-caption-text">Javascript Cheatsheet</p></div>
<ul>
<li><a href="http://www.addedbytes.com/cheat-sheets/javascript-cheat-sheet/" target="_blank">JavaScript Kopya Kağıdı</a></li>
<li><a href="http://www.explainth.at/en/qr/jsqr.shtml" target="_blank">JavaScript Hızlı Referans Kartı</a></li>
</ul>
<div id="attachment_53" class="wp-caption alignnone" style="width: 490px"><img class="size-full wp-image-53" title="JQuery Kopya Kağıdı (Cheatsheet)" src="http://jsturk.com/wp-content/uploads/2009/05/jquery-cheat-sheet.gif" alt="JQuery Kopya Kağıdı (Cheatsheet)" width="480" height="165" /><p class="wp-caption-text">JQuery Kopya Kağıdı (Cheatsheet)</p></div>
<ul>
<li><a href="http://acodingfool.typepad.com/blog/jquery-13-cheat-sheet.html" target="_blank">jQuery 1.3 Kopya Kağıdı</a></li>
<li><a href="http://www.gscottolson.com/weblog/2008/01/11/jquery-cheat-sheet/" target="_blank">jQuery 1.2 Kopya Kağıdı</a></li>
<li><a href="http://labs.colorcharge.com/jtouch/" target="_blank">jTouch &#8211; iPhone ve iPod için jQuery Kopya Kağıdı</a> &#8211; <a href="http://colorcharge.com/jquery/" target="_blank">Yazdırılabilir Versiyonu</a></li>
</ul>
<div id="attachment_56" class="wp-caption alignnone" style="width: 490px"><img class="size-full wp-image-56" title="Prototype Kopya Kağıdı (Cheatsheet)" src="http://jsturk.com/wp-content/uploads/2009/05/prototype-cheat-sheet.jpg" alt="Prototype Kopya Kağıdı (Cheatsheet)" width="480" height="165" /><p class="wp-caption-text">Prototype Kopya Kağıdı (Cheatsheet)</p></div>
<ul>
<li><a href="http://thinkweb2.com/projects/prototype/prototype-1602-cheat-sheet/" target="_blank">Prototype 1.6.0.2 Kopya Kağıdı</a></li>
<li><a href="http://snook.ca/archives/javascript/prototype_1_5_0_cheatsheet/" target="_blank">Prototype 1.5.0 Kopya Kağıdı</a></li>
</ul>
<div id="attachment_55" class="wp-caption alignnone" style="width: 490px"><img class="size-full wp-image-55" title="Mootools Kopya Kağıdı (Cheatsheet)" src="http://jsturk.com/wp-content/uploads/2009/05/mootools-cheat-sheet.jpg" alt="Mootools Kopya Kağıdı (Cheatsheet)" width="480" height="165" /><p class="wp-caption-text">Mootools Kopya Kağıdı (Cheatsheet)</p></div>
<ul>
<li><a href="http://mediavrog.net/blog/2008/06/11/mootools/mootools-12-cheat-sheet/" target="_blank">MooTools 1.2 Kopya Kağıdı</a></li>
<li><a href="http://mediavrog.net/blog/2007/06/15/mootools/mootools-cheat-sheet/" target="_blank">MooTools 1.1 Kopya Kağıdı</a></li>
</ul>
<div id="attachment_54" class="wp-caption alignnone" style="width: 490px"><img class="size-full wp-image-54" title="Dojo Kopya Kağıdı (Cheatsheet)" src="http://jsturk.com/wp-content/uploads/2009/05/dojo-cheat-sheet.gif" alt="Dojo Kopya Kağıdı (Cheatsheet)" width="480" height="165" /><p class="wp-caption-text">Dojo Kopya Kağıdı (Cheatsheet)</p></div>
<ul>
<li><a href="http://www.kylehayes.info/2009/04/01/dojo-13-base-api-cheat-sheet/" target="_blank">Dojo 1.3 Temel API&#8217;si Kopya Kağıdı</a></li>
</ul>
<div id="attachment_57" class="wp-caption alignnone" style="width: 490px"><img class="size-full wp-image-57" title="YUI Kütüphanesi Kopya Kağıdı (Cheatsheet)" src="http://jsturk.com/wp-content/uploads/2009/05/yui-library-cheat-sheet.gif" alt="YUI Kütüphanesi Kopya Kağıdı (Cheatsheet)" width="480" height="165" /><p class="wp-caption-text">YUI Kütüphanesi Kopya Kağıdı (Cheatsheet)</p></div>
<ul>
<li><a href="http://developer.yahoo.com/yui/docs/assets/cheatsheets.zip" target="_blank">Yahoo! Kullanıcı Arabirimi Kütüphanesi Kopya Kağıdı</a> (tüm özellikleri içeren tek bir zip dosyası)</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://jsturk.com/arac/javascript-kopya-kagitlari-cheatsheets/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 <a href="http://jsturk.com/ders/prototype-js-ile-ajax-form-hazirlamak/" class="more-link">Learn more</a>]]></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 $(&#8216;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>1</slash:comments>
		</item>
	</channel>
</rss>

