Artikel Ajax
Belajar Ajax, pelajari segala sesuatu tentang Ajax dari mulai dari dasar hingga contoh aplikasi Ajax
Ditulis oleh Dhimas Ronggobramantyo
Kategori: Ajax
Dibaca 18009 kali
Ajax, kita tentu sudah sering mendengar kata-kata tersebut. Apalagi bagi Web Programmer, Ajax sudah menjadi teknologi yang wajib digunakan dalam membuat website moderen. Tapi sebenarnya apa sih Ajax itu? dan dari mana sebenarnya Ajax berasal? Mari kita bahas satu persatu.
Asal mula Ajax
Apa perbedaan antara aplikasi website dan aplikasi desktop pada komputer? Jawabannya hanya satu, aplikasi desktop lebih interaktif dan responsif dibanding aplikasi web. Jika anda pernah melihat aplikasi pada desktop, jika kita mengklik suatu tombol maka reaksi perubahannya akan langsung terlihat pada aplikasi tersebut yang membuat aplikasi desktop sangat interaktif. Tetapi pada website jika kita mengklik suatu tombol/link maka browser akan melakukan refresh pada browser dimana layar browser akan menjadi putih sesaat karena pada saat itu browser sedang meminta/merequest data dari server
Hal itulah yang membuat aplikasi website menjadi kurang interaktif dan responsif dibanding aplikasi desktop. Ajax digunakan untuk memecahkan masalah tersebut, Ajax membuat aplikasi website menjadi lebih interaktif dan responsif seperti aplikasi desktop. Saat ini Ajax sudah menjadi teknologi yang wajib ada bagi website-website moderen (atau istilahnya Web 2.0).
Asal mula Ajax
Ajax merupakan kepanjangan dari Asynchronous JavaScript + XML dan bukan merupakan
bahasa pemrograman baru tetapi suatu metode/teknik baru yang menggunakan teknologi
yang telah ada. Ajax menggunakan teknologi lama yaitu Javascript yang melakukan request ke
server untuk meminta data dalam bentuk Text/XML. Coba anda bandingkan diagram proses suatu
website keserver pada website konvensional dan website yang menggunakan Ajax:

Sekarang bandingkan dengan website yang menggunakan Ajax:
Jika anda lihat pada website yang menggunakan Ajax, proses request ke server dilakukan oleh Javascript. Sehingga tampilan pada browser client tidak mengalami perubahan (refresh). Kemudian hasilnya akan dikirim oleh server dalam bentuk Text/XML dan ditampilkan dibrowser client
Bagian mana dari tampilan website yang akan berubah? Ajax menggunakan CSS untuk menentukan bagian mana dari website untuk diisi oleh tampilan baru yang baru saja diambil dari server.
Aplikasi Ajax
Pada aplikasi Javascript konvensional jika kita menginginkan data dari server kita menggunakan Form dan memanggilnya dengan method GET atau POST. Sehingga pengunjung perlu mengklik tombol dan kemudian halaman akan kerefresh untuk menampilkan hasil dari request tersebut.
Nah, kalau dengan Ajax, Javascript berkomunikasi langsung keserver dengan fungsi XMLHttpRequest. dengan XMLHttpRequest suatu halaman web dapat meminta data dari server dan menerima hasilnya tanpa perlu terjadi refresh pada halaman web tersebut. XMLHttpRequest telah disupport oleh IE 5 keatas, Safari 1.2 keatas, Mozilla Firefox keatas dan Opera 8 keatas.
Ajax merupakan penggabungan teknologi-teknologi berikut ini:
- Javascript
- HTML/XHTML
- XML
- CSS
Jadi jika anda belum menguasai salah satu dari teknologi tersebut saya sarankan anda pelajari terlebih dahulu sebelum meneruskan membaca artikel ini. Percaya sama saya, Ajax bukan sesuatu yang mudah untuk dipelajari, anda perlu memahami ke empat teknologi tersebut.
Contoh aplikasi Ajax
Langsung saja akan saya berikan contoh aplikasi Ajax, saya akan berikan contoh dan nanti akan saya jelaskan dibawahnya. Sekarang anda tuliskan kode dibawah ini dan simpan dengan nama coba.html
<html>
<head>
<title>Request file dengan Ajax</title>
<script language = "javascript">
var XMLHttpRequestObject=false;
if (window.XMLHttpRequest) {
XMLHttpRequestObject = new XMLHttpRequest();
} else if (window.ActiveXObject) {
XMLHttpRequestObject = new ActiveXObject("Microsoft.XMLHttp");
}
function getdata(url,divhasil) {
if (XMLHttpRequestObject) {
var obj = document.getElementById(divhasil);
XMLHttpRequestObject.open("GET", url);
XMLHttpRequestObject.onreadystatechange = function() {
if (XMLHttpRequestObject.readyState == 4 && XMLHttpRequestObject.status == 200) {
obj.innerHTML = XMLHttpRequestObject.responseText;
}
}
XMLHttpRequestObject.send(null);
}
}
</script>
</head>
<body>
<h1>Mengambil data dari file HTML</h1>
<form>
<input type="button" value="Tampilkan Data" onclick="getdata ('tampil.html','divhasil')">
</form>
<div id="divhasil">
Isi dari tampil.html akan ditampilkan disini
</div>
</body>
</html>
Sekarang buat file tampil.html dan isilah dengan kode berikut ini:
Text ini diambil dengan <strong>Ajax</strong>
Lihat hasilnya disini
Jika anda lihat hasilnya, dan anda klik tombol "Tampilkan Data" maka text dibawahnya akan berubah tanpa me refresh halaman, text tersebut diambil dari file tampil.html.
Kita memanggil fungsi getdata pada tombol tersebut serta mengirim url yang akan
ditampilkan. Inilah kode yang digunakan untuk memanggil fungsi getdata:
<input type="button" value="Tampilkan Data"
onclick="getdata('tampil.html','divhasil')">
Oke sekarang kita perlu membuat object XMLHttpRequest, objek ini wajib
dipanggil jika kita ingin menggunakan Ajax. Untuk memanggilnya kita perlu menggunakan kode
berikut ini:
var XMLHttpRequestObject=false;
if (window.XMLHttpRequest) {
XMLHttpRequestObject = new XMLHttpRequest();
} else if (window.ActiveXObject) {
XMLHttpRequestObject = new ActiveXObject("Microsoft.XMLHttp");
}
Pertama-tama kita set XMLHttpRequestObject=false ini untuk berjaga-jaga jika sebelumnya XMLHttpRequestObject sudah aktif maka kita non aktifkan lagi. Kemudian baru kita aktifkan lagi dengan membuat objek yang baru XMLHttpRequestObject =
new XMLHttpRequest();. Perlu diingat bahwa Internet Explorer menggunakan ActiveX
untuk membuat XMLHttpRequest, karena itu kita membuat kode
XMLHttpRequestObject = new ActiveXObject("Microsoft.XMLHttp");
Oke setelah kita membuat objek XMLHttpRequest sekarang kita membuat fungsi
untuk mengambil file dan menampilkannya. Disini kita membuat fungsi function getdata
(url,divhasil), yang didalamnya terdapat XMLHttpRequestObject.open
("GET", url); yang berarti kita mengambil url dengan method get. Perlu
diingat jika kita menggunakan method get kita perlu mengirimkan sesuatu keserver, karena
kita tidak mengirim apa-apa maka kita kirimkan saja nilai kosong dengan kode:
XMLHttpRequestObject.send(null);
XMLHttpRequestObject.onreadystatechange = function() merupakan sebuah fungsi
dimana nanti kita akan memperoleh status dari request yang kita lakukan.
XMLHttpRequestObject.readyState memiliki 4 status yaitu:
- 0 Request kita belum dibuat
- 1 Request kita sedang dalam proses (biasanya kita buat loading dengan ini)
- 2 Request kita sudah dikirim tapi hasil belum diterima
- 3 Request kita sedang diproses dikomputer klien
- 4 Request sudah sukses dikirim dan kita sudah sukses menerimanya
Sementara XMLHttpRequestObject.status merupakan status http standard. Jadi jika
statusnya 200 berarti file html nya ada dan siap ditampilkan. Sehingga kita perlu mengecek
kedua status tersebut dengan kode if (XMLHttpRequestObject.readyState == 4 &&
XMLHttpRequestObject.status == 200). Jika kedua statusnya oke, maka kita perlu
menampilkannya dengan perintah obj.innerHTML =
XMLHttpRequestObject.responseText. Dimana ini berarti kita menampilkannya di
obj, sementara variabel obj telah kita isi dengan
divhasil, ini kode ketika kita mengisi obj dengan
divhasil, var obj = document.getElementById(divhasil).
Dan karena pada kode HTML kita memiliki tag div dengan
id="divhasil", maka isi dari tampil.html akan ditampilkan didalam tag
div tersebut. Bagaimana mudah bukan? atau malah bingung? Pelajari lagi dan pahami berulang-
ulang, karena yang tadi baru dasar dari Ajax.
Jika kita ingin menambahkan loading ketika request sedang berlangsung maka kita perlu
menambahkan if lagi untuk mengecek status dari
XMLHttpRequestObject.readyState. Ubahlah kode coba.html menjadi:
<html>
<head>
<title>Request file dengan Ajax</title>
<script language = "javascript">
var XMLHttpRequestObject=false;
if (window.XMLHttpRequest) {
XMLHttpRequestObject = new XMLHttpRequest();
} else if (window.ActiveXObject) {
XMLHttpRequestObject = new ActiveXObject("Microsoft.XMLHttp");
}
function getdata(url,divhasil) {
if (XMLHttpRequestObject) {
var obj = document.getElementById(divhasil);
XMLHttpRequestObject.open("GET", url);
XMLHttpRequestObject.onreadystatechange = function() {
if (XMLHttpRequestObject.readyState == 1) {
obj.innerHTML = "Loading";
}
if (XMLHttpRequestObject.readyState == 4 && XMLHttpRequestObject.status == 200) {
obj.innerHTML = XMLHttpRequestObject.responseText;
}
}
XMLHttpRequestObject.send(null);
}
}
</script>
</head>
<body>
<h1>Mengambil data dari file HTML</h1>
<form>
<input type="button" value="Tampilkan Data" onclick="getdata ('tampil.html','divhasil')">
</form>
<div id="divhasil">
Isi dari tampil.html akan ditampilkan disini
</div>
</body>
</html>
Lihat hasilnya disini
Bagaimana mudah bukan? Jika anda ingin menambilnya dari file php maka anda cukup mengganti tampil.html menjadi file php saja, cukup mudah. Pelajarilah dasarnya sebelum membuat aplikasi yang lebih canggih. Walaupun hanya dasarnya saja anda bisa mengembangkannya hingga menjadi aplikasi yang luar biasa. Perlu diingat karena kita mengambil data dari klien maka kemungkinan website kita untuk diserang menjadi lebih mudah karena kode Javascript kita terlihat dibrowser. Untuk itu berhati-hatilah dengan kode Javascript anda jangan tampilkan informasi rahasia pada kode Javascript anda.
Saya pernah punya pengalaman buruk dengan Ajax (sebenarnya itu kesalahan saya, bukan Ajaxnya). Saya membuat sebuah aplikasi Ajax yang menampilkan jumlah pengunjung online di salah satu website saya yang saya hostingkan di Masterwebnet. Anda tentu pernah melihat website yang menampilkan jumlah pengunjung yang online diwebsite itu pada saat itu juga. Nah saya membuat aplikasi seperti itu dengan Ajax, apa kelebihannya? Ketika datang pengunjung ke website saya, maka pada saat itu juga angka jumlah pengunjung online akan bertambah, demikian juga jika ada yang pergi maka angkanya akan berkurang. Semua itu terjadi secara real time, cukup canggih kan. Jadi anda akan melihat angka jumlah pengunjung yang berubah-ubah setiap detik.
Bagaimana cara kerjanya? jika contoh tadi kita mengklik tombol untuk melakukan request ke file html, maka untuk yang ini saya membuatnya otomatis, jadi setiap detik program akan memanggil sebuah file.php.
Sampai pada suatu hari, saya mengakses website saya dan ada pesan website saya didisable. Kaget, waktu itu jam 9 malam, saya langsung kontak support hosting saya dan mengatakan kenapa website saya didsabled. Jawabannya sungguh mengejutkan, katanya ada trojan yang menyebabkan satu server ke restart terus (jadi semua website yang satu server dengan web saya, mati semua karena servernya restart terus :) ). Trojan?? bagaimana bisa, kemudian saya mengira ada masalah dengan ajaxnya, kemudian saya ceritakan kepada support bahwa saya memiliki aplikasi Ajax untuk mengetahui jumlah pungunjung online. Dan jawaban dari si support katanya tidak masalah, bukan itu masalahnya.
Tentu saja saya tidak percaya begitu saja, dan saya meminta hosting saya diaktifkan sebentar dan nanti saya akan matikan Ajaxnya untuk melihat apakah semuanya beres. Si support bilang ia perlu menanyakannya dulu ke seniornya, berarti saya lagi apes dapat support junior :)
Setelah beberapa sekitar 10 menitan, web saya aktif kembali. Kemudian saat itu juga saya matikan Ajax saya yang bermasalah. Dan saat itu juga si support bilang trojannya sudah hilang. Saya jawab saja "ya sudah, thanks".
Ajax = Trojan ??? Aplikasi pengunjung online saya memanggil sebuah file php setiap detik, ini membebankan server dan si hosting menganggapnya ini trojan. Sejak saat itu saya hilangkan saja aplikasi pengunjung online tersebut.
Kesimpulan: Berhati-hatilah dalam membuat aplikasi Ajax. Jika anda ingin membuat aplikasi seperti yang saya buat, siapkan server sendiri dengan bandwith yang besar :) jika tidak aplikasi anda malah dianggap trojan oleh perusahaan hosting. Selamat mencoba.
Komentar [50]
koq..aku belajar ajax..ga mudeng2 ya...cape dech belajarnya...tetep wee ga mudeng....ughhhh sebellll..... hiks hiks hiks
mantap bro
aduch... ajax nie pa'an c??? truz pa program nie pakek nginstal sgala(katrok ya aq) tapi aq pngn tau...
truz referensinya kurang banyak nie.. iar aq ngerti
Subhanallah keren trima kasih ilmunya smg kita2 cepet2 ngerti n build amazing web with ajax ... but warning, many articles to ajax hack 
but stay matur nuwun
thank you
saya punya masalah dengan web lokal saya.
Saya mencoba script yang sudah mas sampaikan tapi kok loading terus ya .. gak selesai2x
Saya memakai xampp 1.6.4
OS Windows XP Profesional sp2
Memory 512MB
Mohon petunjuknya
Artikel ini sangat membantu sekali.
thanks mas dhimas
ditunggu artikel ajax part 2 nya
to Andi Eko
Kalau udah muncul loading berarti tidak ada masalah di ajaxnya, kemungkinan ajaxnya gagal meload file tujuannya, bisa jadi filenya gak ada atau linkny salah jadi gak ketemu
Lha mas.. wong alamat e udah bener koq...
Aku coba di 2 komp yang berbeda.. yang satu bisa tampil dengan baik, sedang komp yang satunya nggak bisa tampil.
Aku pakai Firefox 2-2 nya dan semuanya javascript nya bisa dijalanin..
kenapa yah mas bisa nggak tampil di komp yang satu?
Ehm.. lagi dong mas.. tulis tentang ajax lagi dong.. penjelasan mas dhimas enak sih.. jadi gampang aku cerna gitu..
thanks yah
Bro, mohon pencerahannya dong,
gimana caranya menarik data dari mysql ke form,
misal kita ketik no invoicenya data pendukung lannya ketarik juga misal tgl_trans,qty,ket,no_customer dsb, trim's
To Anto ,
Byk cara sih salah satu yang sederhana mkn seperti ini :
di file php yg memproses request kita buatkan sql statement misal
Nah kemudian di script javascriptnya dibagian hasil pemrosesan data ( ambil contoh script ajax yg diatas )
.......................................................
if (XMLHttpRequestObject.readyState == 4 &&
XMLHttpRequestObject.status == 200) {
var data = XMLHttpRequestObject.responseText.split("&&&");
document.formname.formfield_tgl.value = data[0];
document.formname.formfield_qty.value = data[1];
document.formname.formfield_ket.value = data[2];
document.formname.formfield_no_customer.value = data[3];
}
Nah di form html nya sendiri
===============
Jadi intinya hasil query sql kita gabungkan dalam satu variabel yang dipisahkan dengan karakter &&& ( atau terserah kita ) , kemudian di AJAX dipisahkan menggunakan perintah split("&&&") . Setelah itu tinggal distore ke masing2 field di form yang ditentukan .
untuk Script AJAX gunakan saja seperti yang diatas , tinggal ganti saja di bagian seperti yg sy jelaskan diatas
Selamat mencoba.
Teddy A
teddya98@yahoo.com
walah list script php dan htmlnya diblok euy ...
coba lg
script php
=================
( sql statemetn)
select tgl,qty,ket,no_cust from t_customer where inv_no = noinv
(ambil data)
data = row[0]."&&&".row[1]."&&&".row[2]."&&&".row[3]
=====================
Catatan : lengkapi sendiri kalau lengkap diblok soalnya , utk variabel jgn lupa tanda dollar seperti data dan row
trus untuk form html nya
=============================
input type=test name=formfield_tgl
input type=test name=formfield_qty
input type=test name=formfield_ket
input type=test name=formfield_no_customer
==============================
Catatan : lengkapi jg utk kode html
Smg gak keblok he he
apa kelebihan ajax dan kekurangan ajax?
dan apakah implementasi ajax yang sesuai?
untuk web berbasis data atau gambar......?
Thank's
apa kelebihan ajax dan kekurangan ajax?
dan apakah implementasi ajax yang sesuai?
untuk web berbasis data atau gambar......?
Thank\'s
wah mas,,,,mantab banget artikel2 nya,,,
THANKS'S YA
mboten ngertos . . .
ak pengen ikut2 belajar ajx....bantuin aku ea????
tolong bantuin step by step,aku masih awam ni...dari awal/dari nol(0) ea..???
aku tunggu....
Kalau boleh di posting dong, penggunaan ajax untuk beberapa halaman yang menggunakan file php, kalau satu aja sih dah boleh, cuma kalau dah lebih dah bingung lagi....
Kebayanakan tutorial hanya mengggunakan 1 file php, sebaiknya menggunakan beberepa file php, dan link antar file ,,,,
TQ
wah bagus juga tutorialnya mas.keren juga klo dicoba buat para programmer indonesia,bangkit donk!
hai..hai..mohon bantuannya.
saya mau tanya klo kita mau bikin validasi dari sebuah listbox, dan data yang valid ditampilkan kedalam listbox yang lain tapi ditampilkan dihalaman yang sama gimana caranya yaa..??
apakah bisa pake AJAX...
Gila amat.....ya !!! AJAX bahasa pemrograman yg baru ya (dasar katrok)\'??? kirain teh club sepak bola asal belanda...wah keren nich, baru kenal nich ma AJAX...mas-mas di alam sana (hehe) bagi-bagi ilmunya donk!!! ditungguin ya artikel yg lainnya pokok ke yg bertentangan dgn bahasa programing...Mas Dhimas muatin artikel yg lebih detail lagi tentang AJAX ya....
good
mas,tambah lagi yah tutor ajax yg mas pnya
Aq pngen bljar bnyak nie,
bwt ngrjain TA,
mksih mas
ajak itu termasuk web 2.0 bukan ????
saya mendapatkan tugas untuk memberikan serta menjelaskan contoh aplikasi dari web 2.0.
tolong bantu saya.....
ajak itu termasuk web 2.0 bukan ????
saya mendapatkan tugas untuk memberikan serta menjelaskan contoh aplikasi dari web 2.0.
tolong bantu saya.....
Sip... thx, kalo bisa buat millis aja dah ... biar rekan rekan yang coba mau ngoprek ato utak atik ajax .. tambah seru ...
duch gw baru pertama kali ne mo tau gmn caranya tuch ,, klo gw liat bakalan puyeng ne kepala gw liat tuch code 2 nya ..huhhhh
ga da yg lebih gampang ne brooo......
Thank's buat LOGIKAnya.....
alhamdulillah saya sangat bersyukur dengan adanya forum komunikasi ini, tapi saya masih bingung cara penggunaan ajax? boleh dong kasih tau gimana cara penggunaan ajax.....
alhamdulillah saya sangat bersyukur dengan adanya forum komunikasi ini, tapi saya masih bingung cara penggunaan ajax? boleh dong kasih tau gimana cara penggunaan ajax.....
aku dapet tugas suruh buat web tentang AJAX, ada yang punya contoh simple ga?
atau kasih saran tuk tema nya tentang apa?
qu bimgung nie...
aku dapet tugas suruh buat web tentang AJAX, ada yang punya contoh simple ga?
atau kasih saran tuk tema nya tentang apa?
qu bingung nie...
kalo ada tolong kirim ke email qu ya...
merapigreen06@gmail.com
Sukron
aku dapet tugas suruh buat web tentang AJAX, ada yang punya contoh simple ga?
atau kasih saran tuk tema nya tentang apa?
qu bingung nie...
kalo ada tolong kirim ke email qu ya...
merapigreen06@gmail.com
Sukron
Wow... kirain ajax begitu susahnya hingga otakku harus buka terus disikat biar bersih...
Eh lha ini baru baca aja udah dapet gambaran tentang ajax... Paling tidak udah paham... Kalau bisa yang levelnya agak atasan dikit...
Makasih buat mas Dhimas Ronggo Bramantyo, sangat membantu...
pekik@pekik.co.cc
baguss banget !!!
bisa jd bahan referensi buat belajar
makasih yah ^^
Terima kasih atas tulisannya. Semoga anda selalu berbaik hati pada semua orang.
Mas di tempat saya koq.... pemanggilan tampil.html tidak muncul, kenapa ya mas...? padahal semua code programnya sudah benar. Apa ada yang salah / komputer saya tidak mendukung proses tersebut.
Tolong jawabannya ... segera...
E-mail saya :
hasan@syeahroni.co.cc
mantap mas..
saya akan coba bantu sebarkan lewat website http://www.jayaputra.co.id dan tentu saja akan saya tampilkan sumbernya..
selamat dan sukses
asdf
asdf
Makasih buat penjelasannya..sangat membantu saya
Mas Dhimas ,kalo pengen menggunakan jquery mesti di download dulu y"?
trim banget artikelnya sangat menolong
maaf mas, saya kan pake syntax ajax punya mas yg diatas bwt bkn TA, nah di halaman utama(index.php) kan saya pasangi ajax, trus tentunya di index.php kan ada file gallery(paging.php) yang sy gunakan untuk menampilkan barang2. nah di masalah muncul pas saya klik "next" ato pindah ke halaman berikutnya (di paging.php) bwt ngeliat barang2 yg lain, masalahnya index.php nya hilang langsung berubah ke halaman paging.php yg page ke 2. gmn caranya ya mas supaya indexnya tetep ditampilkan pas saya mencet next di gallery nya?
maaf klo pertanyaannya kepanjangan.. thanks b4
makasih, q ngopi ya....
moga ilmunya dapat bermanfaat dan tidak berkurang malah bertambah, amiin......
dan klo bisa selalu update scriptnya, agar kita2 semakin semangat belajar
mas saya masih belum ngerti ni...banyakin postingannya lagi ya...ato contoh program yang lain..kaya misalnya guestbook pake ajax atau apalah...makasih ya mas sebelumnya...
fja;jf;ajfajf ;afj;a fja;l fa
PENCERAHAN!! ini yang saya butuhkan. pengertian dasar dari script ajax... makasi banyak ya buat mas dhimas
wah - wah ...
kagum dengan ide nya mas .. yg counter pengunjung....
tapi sayangnya kog bisa jadi trojan ya mas...??
hmmmmm...hmmmm...hmm...........
puyeng juga lama2 ngeliat script nya ...
hehe...
tapi okelah...
MANTAP ...
(hebat lhoo.. postingnya 2007, 2010 msh ada yg komen... hehe++)
^_^