Home > Ajax, JavaScript, PrototypeJs, Snippets, Tips & Trick > Tips Membuat Web Full Ajax Sederhana

Tips Membuat Web Full Ajax Sederhana

October 17th, 2008 8,891 views Leave a comment Go to comments

Fenomena Ajax yang menjanjikan pengembangan aplikasi web menjadi lebih dinamis dan interaktif membuat para developer pun terus menerus melakukan eksperimen. JavaScript yang menjadi unsur dasar Ajax pun terus menerus dikembangkan dan hampir seluruh website sudah pasti menggunakan JavaScript untuk membuat setiap halamannya lebih hidup dan menarik.

Yang membuat Ajax menarik adalah kita dapat mengupdate satu atau lebih dari element di halaman web kita tanpa perlu reload halaman. Bila reload dapat dihindarkan tentunya kita berhemat waktu pengambilan data.

Seiring berkembangnya Ajax, banyak pertanyaan dan usulan muncul kepada saya tentang bagaimana kalau kita buat saja 1 web yang seluruh fasilitasnya merupakan Ajax, jadi tidak ada lagi berpindah-pindah halaman karena semua proses dilakukan pada 1 file. Bagaimana mungkin? namun di dalam prinsip saya “kalau tidak dicoba maka belum boleh bilang tidak mungkin” bukan?? ^_^

Disini saya punya tips dasar membuat website berpindah-pindah halaman/proses dengan Ajax dan kita akan lakukan semua proses di 1 file saja yaitu index.html.

Pertama-tama siapkan 2 buah halaman (atau lebih) untuk menjadi sample content yang akan bergantian di load sesuai request dari index.html.

1
2
<h2>Hello this is content 1</h2>
Loren in sum sit amet this is just a sample text for web development loren in sum sit amet this is just a sample text for web development loren in sum sit amet this is just a sample text for web development.
1
2
3
4
5
6
<h2>This is content 2</h2>
<?
	foreach($_SERVER as $key=>$value){
		echo $key . ' : ' . $value . '<br />';
	}
?>

Lalu buat file index.html dengan isi sederhana seperti ini:

39
40
41
42
43
44
45
46
47
 <table width="80%" border="1">
  <tr valign="top">
   <td width="15%">
    <a href="javascript:loadModule('content1')">Content 1</a><br />
    <a href="javascript:loadModule('content2')">Content 2</a>
   </td>
   <td width="85%" id="tdContent"></td>
  </tr>
 </table>

Sebelum melanjutkan topik, saya akan jelaskan apa pengertian module disini dan bagaimana 1 file dapat memproduksi berbagai module, jawabannya adalah kita bermain di lokasi dokumen (document.location). Coba perhatikan URL berikut:

http://yourweb/index.html#content1
http://yourweb/index.html#content2

Pada url diatas string ‘content1′ dan ‘content2′ adalah nama module dan apabila url ini dipanggil akan ada JavaScript yang mendeteksi nama module dari lokasi dokumen (URL) dan akan mengeksekusi perintah-perintah yang harus dikerjakan apabila module ini dipanggil. Cukup jelas??

Untuk memanipulasi lokasi dokumen (URL) dan mendapatkan nama module tersebut saya sudah menyediakan class sederhana dan simpan nama class tersebut dengan nama document.class.js:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
var T10Doc = Class.create({
 _splitLocation: function(){
	var docLoc = new String(document.location);
	return docLoc.split('#'); // pecah lokasi document berdasar karakter '#'
 },
 getModule: function(){
	var arr = this._splitLocation();
	if(arr.length == 2) 
	 return arr[1]; // nama module adalah string setelah karakter '#'
	else return null;
 }, 
 saveModule: function(moduleName){
	var arr = this._splitLocation();
	/*
	  	Apabila sebelumnya sudah ada nama module maka ganti nama module
		tersebut dengan nama module baru namun apabila lokasi dokumen
		tidak terdapat nama module maka tambahkan #namamodule setelah 
		string lokasi dokumen
	*/
	if(arr.length == 2) document.location = arr[0]+'#'+moduleName;
	else document.location += '#'+moduleName;
 }
});

Langkah terakhir adalah sisipkan script di bawah ini diantara tag head index.html yang telah anda buat sebelumnya:

4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
<script language="javascript" src="prototype.js"></script>
<script language="javascript" src="document.class.js"></script>
<script language="javascript">
 var doc = new T10Doc();
 function loadModule(moduleName){
 	switch(moduleName){
		case 'content1' : 
			// load content 1 dan tampilkan isinya pada element yang disediakan
			new Ajax.Updater('tdContent','content1.htm',{method: 'GET'}); break; 
		case 'content2' : 
			// load content 2 dan tampilkan isinya pada element yang disediakan
			new Ajax.Updater('tdContent','content2.php'); break; 
		default: 
			// apabila nama module tidak terdefinisi, kosongkan isi element
			$('tdContent').update('&nbsp;'); 
	}
	doc.saveModule(moduleName); // ubah url menjadi [lokasi dokumen]#[nama module]
 }
 window.onload = function(){ 
   	/*
		Apabila browser di refresh dan terdapat nama module pada lokasi dokumen
		maka eksekusi module tersebut. Fungsi doc.getModule() untuk mendapatkan
		nama module saat ini.
	*/
 	loadModule(doc.getModule()) 
 }  
</script>

Hasilnya adalah ketika anda menekan salah satu link content maka ada 2 hal yang terjadi yaitu isi dari kolom sebelah kanan berubah sesuai content yang ditentukan dan URL (lokasi dokumen) anda pun berubah dan menyimpan nama module dengan format [lokasi dokumen]#[nama module]. Apabila anda refresh halaman anda, maka url tidak akan berubah dan dengan sendirinya module terakhir sebelum anda me-refresh browser akan tereksekusi kembali.

Untuk melihat demo dari artikel ini anda dapat melihat di link ini.

Download contoh aplikai lengkap dari artikel ini di link ini.

Semoga artikel saya ini dapat membantu anda dan menambah wawasan anda…Terima kasih… ^_^

(18 votes, average: 4.50 out of 5) KurangBiasaLumayanBagusLuar Biasa
Loading ... Loading ...
  1. abdul charis
    January 13th, 2009 at 10:55 | #1

    keren……. thanks bro…….. anak DW neeh…….. :D

  2. January 13th, 2009 at 11:20 | #2

    yoi… DW is the best… ^_^

  3. Mark Gyto
    February 12th, 2009 at 12:44 | #3

    Welwh-weleh …
    Wapik pol ( very good …!!!!!)

  4. February 12th, 2009 at 12:54 | #4

    Thanks… ^_^

  5. February 13th, 2009 at 04:22 | #5

    sekali lagi makasih mas……..

  6. February 24th, 2009 at 19:17 | #6

    thanks mas, bantu bgt tuh :)

  7. March 6th, 2009 at 13:15 | #7

    Catatan penting nih:
    Kalau anda ingin load file HTML lebih baik beri method: GET pada fungsi Ajax.Updater karena beberapa hosting tidak memperbolehkan file HTML diakses lewat POST dan default method Ajax.Updater adalah POST.

  8. bandi
    April 9th, 2009 at 09:19 | #8

    klo mo nerapin ajax di joomla gmana yach…??minta sedikit contoh donk…???web nya keren bgt…???

  9. April 27th, 2009 at 11:43 | #9

    Memang dengan menerapkan ajax pada web lebih menghemat waktu, ga harus nunggu loading lama.

    Mas Bandi, kalau untuk penerapan ajax di joomla sy belum punya, tapi ini ada tutorial untuk membuat efek lightbox pada image di posting joomla : http://www.inspirasiweb.co.cc/?p=76

    mudah-mudahan ada manfaatnya.

  10. July 4th, 2009 at 18:12 | #10

    thanks tutorialnya, keep blogging.

  11. August 29th, 2009 at 23:33 | #11

    mas klo naro content1 ma 2 nya dimana yah satu file kah sama index.htmlnya

  12. August 30th, 2009 at 09:24 | #12

    naronya beda file sama index pastinya

  13. November 3rd, 2009 at 20:28 | #13

    tutorial yang sangat bagus dan enak dibaca ^__^
    trims mang admin

  14. aredin
    December 17th, 2009 at 00:23 | #14

    thank banget tutorialnya…..bang Admin

    aku minta bantuan gimana membuat pilihan tanggal lahir seperti datetimepicker pd php

    thx b34

  15. January 9th, 2010 at 16:50 | #15

    mas mau nnya kirim coment tnpa pndah halaman kaya di facebook, pke ajax apa y.. blh mnta cntohnya gk..

  16. ical
    February 17th, 2010 at 21:50 | #17

    TOB banget.sangat membantu sy yang teramat newbie di dunia per-web-an :D

  17. February 24th, 2010 at 21:49 | #18

    mas,….
    blajarin saya tentang ajax sih,…..

  18. June 11th, 2010 at 00:00 | #19

    Josh gandos Om, aku harus belajar nich biar cepet paham……

  1. No trackbacks yet.