<?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>BBProject.net &#187; load</title>
	<atom:link href="http://www.bbproject.net/tag/load/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.bbproject.net</link>
	<description>Programowanie, webmastering, informatyka</description>
	<lastBuildDate>Tue, 01 Mar 2011 20:35:37 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>AJAX w jQuery dla początkujących</title>
		<link>http://www.bbproject.net/2010/04/ajax-w-jquery-dla-poczatkujacych/</link>
		<comments>http://www.bbproject.net/2010/04/ajax-w-jquery-dla-poczatkujacych/#comments</comments>
		<pubDate>Sun, 18 Apr 2010 19:10:40 +0000</pubDate>
		<dc:creator>M@ster</dc:creator>
				<category><![CDATA[Programowanie]]></category>
		<category><![CDATA[Webmastering]]></category>
		<category><![CDATA[ajax]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[jquery]]></category>
		<category><![CDATA[load]]></category>

		<guid isPermaLink="false">http://www.bbproject.net/?p=288</guid>
		<description><![CDATA[Szybki i lekki kurs dla początkujących pod tytułem: AJAX w jQuery. Innymi słowy, jak przy pomocy tej biblioteki załadować dynamiczną treść bez przeładowania strony. Wszystko czego będziemy potrzebować to biblioteka jQuery, dobre chęci oraz szczypta zapału. Przechodzimy na stronę jquery.com i pobieramy najnowszą wersję skryptu. Ja na potrzeby tego wpisu stworzyłem sobie dwa pliki, pierwszy [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-full wp-image-289" title="jQuery" src="http://www.bbproject.net/wp-content/uploads/2010/03/jquery.png" alt="" width="235" height="73" />Szybki i lekki kurs dla początkujących pod tytułem: <a href="http://pl.wikipedia.org/wiki/AJAX">AJAX</a> w jQuery. Innymi słowy, jak przy pomocy tej biblioteki załadować dynamiczną treść bez przeładowania strony.</p>
<p>Wszystko czego będziemy potrzebować to biblioteka jQuery, dobre chęci oraz szczypta zapału. Przechodzimy na stronę <a href="http://jquery.com">jquery.com</a> i pobieramy najnowszą wersję skryptu.</p>
<p>Ja na potrzeby tego wpisu stworzyłem sobie dwa pliki, pierwszy będący główną stroną która będzie korzystać z techniki AJAX, oraz drugą zawierającą ładowane treści &#8211; obie jako skrypty PHP, aby nie było zbyt nudno. Ok, przechodzimy do działania.</p>
<p><span id="more-288"></span>Pierwszym krokiem będzie dołączenie do dokumenty biblioteki jQuery w sekcji <em>head</em> strony:</p>
<pre class="brush: xml">&lt;script type="text/javascript" src="jquery-1.4.2.min.js"&gt;&lt;/script&gt;
</pre>
<h4>Najprostszy przypadek</h4>
<p>Czyli zwyczajne załadowanie zawartości innego pliku html/php bez przeładowania strony.</p>
<p>Dodam do naszej strony dwie warstwy, jedną która będzie przyjmować ładowane treści, i drugą z przyciskiem wywołującym zdarzenie.</p>
<pre class="brush: xml">&lt;div id="box"&gt;&lt;/div&gt;
&lt;div&gt;&lt;input id="btn" type="button" value="Wyślij"&gt;&lt;/div&gt;
</pre>
<p>Teraz pozostaje nam już tylko dodanie akcji do przycisku.</p>
<pre class="brush: jscript">$(document).ready(function(){
  $('#btn').click(function(){
    $('#box').load('data.php');
  });
});
</pre>
<p>Może czas na wyjaśnienie powyższego kodu. Pierwsza linia przypisuje zdarzeniu załadowania strony funkcję w której określamy co ma się dziać. Jest to wymagane podczas używania jQuery (i nie tylko), aby mieć pewność że struktura dokumentu widziana przez przeglądarkę jest kompletna. Kolejno elementowi o identyfikatorze <em>btn</em> przypisujemy zdarzenie kliknięcia w którym do elementu <em>box</em> ładujemy przy pomocy funkcji <a href="http://api.jquery.com/load"><em>.load</em></a> dane z pliku <em>data.php</em>.</p>
<p>W <em>data.php</em> umieściłem zwyczajowy tekst, równie dobrze może to być plik html. Przy tak przygotowanym kodzie, kliknięcie przycisku „Wyślij” powinno skutkować pojawieniem się nad nim treści zawartej w zewnętrznym pliku.</p>
<p>Kompletny kod całego dokumentu wygląda następująco:</p>
<pre class="brush: xml">&lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"&gt;
&lt;html&gt;
  &lt;head&gt;
    &lt;meta http-equiv="content-type" content="text/html; charset=utf-8"&gt;
    &lt;script type="text/javascript" src="jquery-1.4.2.min.js"&gt;&lt;/script&gt;
    &lt;script type="text/javascript"&gt;
      $(document).ready(function(){
        $('#btn').click(function(){
          $('#box').load('data.php');
        });
      });
    &lt;/script&gt;
  &lt;/head&gt;
  &lt;body&gt;
    &lt;div id="box"&gt;&lt;/div&gt;
    &lt;div&gt;&lt;input id="btn" type="button" value="Wyślij"&gt;&lt;/div&gt;
  &lt;/body&gt;
&lt;/html&gt;
</pre>
<h4>Przekazywanie parametrów</h4>
<p>Jeśli powyższy przypadek chcielibyśmy wzbogacić o przekazanie jakichś parametrów do wywoływanego pliku <em>data.php</em>, musimy rozbudować nieco funkcję <em>.load</em>.</p>
<pre class="brush: jscript">$('#box').load('data.php', {index: 4, str: 'abc'});
</pre>
<p>Drugi parametr określa tablicę par klucz: wartość. Dane te są przesyłane metodą POST, zatem mamy do nich łatwy dostęp w docelowym skrypcie php. Przykładowa zawartość <em>data.php</em>:</p>
<pre class="brush: php">Index: &lt;?php echo $_POST['index']; ?&gt;&lt;br&gt;
Ciąg znaków: &lt;?php echo $_POST['str']; ?&gt;
</pre>
<p>Tym sposobem możemy wpływać na to co ma zostać załadowane. Podawane dane możemy odczytać z pola tekstowe lub innych zmiennych &#8211; wszystko zależy od naszej inwencji oraz umiejętności pisania w JavaScript.</p>
<h4>Wysyłanie formularzy</h4>
<p>Ostatnim punktem będzie wysłanie formularza. Można by oczywiście skorzystać z powyższej metody kopiując zawartości pól formy, jednak było by to mało wygodne. My skorzystamy z funkcji <a href="http://api.jquery.com/serializeArray"><em>.serializeArray</em></a>.</p>
<p>Zmodyfikowałem zawartość dokumentu wzbogacając go o prosty formularz z dwoma polami:</p>
<pre class="brush: xml">&lt;div id="box"&gt;&lt;/div&gt;
&lt;div&gt;
  &lt;form id="form"&gt;
    Pole 1: &lt;input type="text" name="pole1"&gt;&lt;br&gt;
    Pole 2: &lt;input type="text" name="pole2"&gt;&lt;br&gt;
    &lt;input id="btn" type="button" value="Wyślij"&gt;
  &lt;/form&gt;
&lt;/div&gt;
</pre>
<p>Kolejno modyfikujemy kod JavaScript:</p>
<pre class="brush: jscript">$('#box').load('data.php', $('#form').serializeArray());
</pre>
<p>Tym sposobem, do pliku <em>data.php</em> zostanie przekazana zawartość pól formularza o identyfikatorze <em>form</em>. Co z nimi zrobimy, zależy już od nas.</p>
<h4>Podsumowanie</h4>
<p>Mam nadzieję iż chociaż troszkę pomogłem osobą które po raz pierwszy próbowały użyć technologii AJAX przy pomocy jQuery. Bardziej zaawansowanym polecam zapoznanie się z resztą <a href="http://api.jquery.com/category/ajax">funkcji</a> dostępnych w jQuery, które dają większe możliwości manipulacji danymi i tym co się dzieje podczas wywołania asynchronicznego.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.bbproject.net/2010/04/ajax-w-jquery-dla-poczatkujacych/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

