Implementasi JSON pada Aplikasi Ajax
JSON ( JavaScript Object Notation ) singkatnya adalah salah satu format data yang digunakan untuk melakukan komunikasi antar aplikasi, khususnya aplikasi web. JSON sering digunakan sebagai alternatif penggunaan XML karena sifatnya yang lebih simple, lebih cepat dan lebih mudah di-parsing / terjemahkan.
Sama hal-nya pada aplikasi web yang menggunakan Ajax, JSON dianggap lebih powerful daripada XML untuk dijadikan sebuah response dari request Ajax. Jika XML ditampilkan dalam bentuk tag atau lebih menjurus ke format HTML, JSON lebih menjurus pada format variable JavaScript.
JSON biasanya mengkonversi variable PHP menjadi format JavaScript. Berikut contohnya:
$data = array( 'kode' => 'P001', 'nama' => 'Chandra', 'umur' => 23 );
Variable PHP dan isinya diatas jika di konversi menjadi JSON akan seperti ini:
{"kode":"P001","nama":"Chandra","umur":23}
Isi variable PHP sebelum di konversi ke JSON berupa array assosiatif 1 dimensi, maka format JSON yang terbentuk dari variable PHP tersebut juga berupa array assosiatif 1 dimensi. Mari lihat contoh konversi array 2 dimensi PHP menjadi JSON.
$data = array( array( 'kode' => 'P001', 'nama' => 'Chandra', 'umur' => 23 ), array( 'kode' => 'P002', 'nama' => 'Agus', 'umur' => 25 ), array( 'kode' => 'P003', 'nama' => 'Denis', 'umur' => 20 ) );
[ {"kode":"P001","nama":"Chandra","umur":23}, {"kode":"P002","nama":"Agus","umur":25}, {"kode":"P003","nama":"Denis","umur":20} ]
Untuk melakukan konversi ini para developer JSON sudah menyediakan library PHP untuk melakukan konversi ke JSON dengan mudah. Jika anda men-download contoh script pada artikel ini maka library yang dimaksud adalah file ‘JSON.php’.
Lalu implementasi JSON pada Ajax akan saya berikan contoh sederhana yaitu aplikasi pencarian artikel dari database. Pertama-tama siapkan dulu table pada database MySQL yaitu table “artikel”.
CREATE TABLE `artikel` ( `id` int(5) NOT NULL AUTO_INCREMENT, `judul_artikel` varchar(100) collate latin1_general_ci NOT NULL, `isi_artikel` text collate latin1_general_ci NOT NULL, `tanggal_posting` date NOT NULL, PRIMARY KEY (`id`) )
Masukan beberapa data di dalam table tersebut. Lalu buat file HTML dengan form seperti ini.
50 51 52 53 54 55 | <form onSubmit="return cariArtikel()"> Cari Judul Artikel: <input type="text" name="txtCari" size="20" /> <input type="submit" value="Cari" /> <div id="divResult"></div> </form> |
Pada tag HEAD masukan script ini.
10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 | <script language="javascript" src="jquery.js"></script> <script language="javascript"> function cariArtikel(){ // ambil nilai dari form inputan dengan nama 'txtCari' var txtCari = $('input[@name=txtCari]').val(); $.post('cariartikel.php', {cari:txtCari}, // kirim variable POST dengan nama 'cari' ke 'cariartikel.php' function(response){ // jika hasil response kosong maka berikan alert dan keluar dari fungsi if(response == null){ alert('Pencarian artikel tidak ditemukan'); return; } /* Catatan: Pada artikel-artikel saya sebelumnya data respon dari request langsung dimasukan ke salah satu element html di file ini, namun kali ini karena format yang diterima JSON maka kita harus menentukan sendiri cara menampilkan data tersebut. Kali ini saya akan tampilkan data request dari server ke dalam bentuk table. */ var table = '<table border=1>'; table += '<tr bgcolor=#CECECE><th>No</th><th>Judul</th><th>Isi</th><th>Tanggal</th></tr>'; // melakukan looping dari data JSON karena data yang didapat berupa array 2 dimensi for(var x=0;x<response.length;x++){ // setiap field pada setiap baris response adalah field dari table artikel di MySQL table += '<tr><td>'+(x+1)+'</td><td>'+response[x].judul_artikel+'</td>'; table += '<td>'+response[x].isi_artikel+'</td>'; table += '<td>'+response[x].tanggal_posting+'</td></tr>'; } table += '</table>'; // masukan hasil looping data berupa table ke dalam element html di halaman ini $('#divResult').html(table); }, 'json' // ambil data dari response ajax sebagai JSON ); return false; } </script> |
Lalu untuk file yang akan memberikan response berupa JSON adalah file “cariartikel.php”:
<? // Agar memastikan bahwa halaman ini diakses dengan parameter POST: cari isset($_POST['cari']) or die('Error parameter'); mysql_connect('localhost','root',''); mysql_select_db('test'); include 'JSON.php'; // panggil library untuk konversi variable PHP ke JSON $json = new Services_JSON(); $cari = $_POST['cari']; $query = mysql_query("SELECT * FROM artikel WHERE judul_artikel LIKE '%$cari%'"); if($query && mysql_num_rows($query) > 0){ $data = array(); // variable ini akan menampung keseluruhan hasil query while($row = mysql_fetch_object($query)){ $data[] = $row; } echo $json->encode($data); // fungsi untuk konversi variable PHP ke JSON }else echo $json->encode(NULL); ?>
Untuk melihat demo dari program diatas lihat di Link ini.
Untuk men-download program dari artikel ini lihat di Link ini.
Semoga dapat menambah wawasan anda… ^_^
Chandra Jatnika

nambahin ya.. Kenapa json? itu karena dia javascript. tinggal di eval langsung jadi object javascript. kita tidak perlu lagi melakukan proses manipulasi dom seperti yang kita lakukan pada xml (sangat melelahkan? hal lainnya adalah json memperkecil ouput response karena gak tag2 yang gek berguna
)
trus semenjak php 5.2 itu ada fungsi baru yaitu json_encode dan json_decode. jadi gak usah pake kelas itu lagi (5.2 udah hampir 1.5 tahun lalu relis jadi hosting dah banyak yang support itu)
Ya, alasan kenapa json lebih banyak dipilih di aplikasi Ajax karena masalah perform dan kecepatan tentunya.
Gak perlu lagi teknik2 parsing seperti penterjemahan XML dll karena tinggal pakai fungsi.
Maka variable ‘test’ sudah langsung dapat dipergunakan.
Untuk fungsi built-in di php 5.2 keatas terus terang aku baru tahu. Thanks banget atas masukannya mas ibnoe.
allow webMaster -(*-*)-,
tutornya gmail.com banget ya.. mantab abis tapi msh blm paham nih
pada file ‘cariartikel.php’ di baris ini :
encode($data);
… ?>
pd var tsb kan mash berupa PHP trus di covert ke javaScript bacanya pake fungsi apa ya …
makasih om tutornya …
akan menghasilkan sebuah string dengan format yang bisa dibaca javascript. PHP kan ngasih response ke javascript berupa string, tapi ketika di kasih fungsi eval maka string itu bisa dianggap sebuah format array.
gmn mas? mudeng?
blum juga om ..
iya om klo di echo m’jadi string ala JSON,
nah yg saya bingung itu string $json->encode($data) msh di dlm var dng bahasa PHP,
agar bs ditangkap oleh JS itu yg saya bingung webMaster (^-”)
apa hrs menggunakan Framework JS ya … ?
klo dr tutor di ats script yg mana om ya yg menangkap var $json->encode($data) menjadi javaScript
hore …. blajar gratis eui…
makasih om atas responnya ….
klo ajax konvensional begini
allow webMaster __(*-*)__
tambah ga mudeng nih …
tp gpp mungkin aq salah tahapan kali ya… dan hrs pelan2,
yg pnting aq dah ngerti convert ke JSnya.
tinggl bljr jquery nya.
makasih banyak webMaster,
di tunggu nih tutor lainnya apalgi yg m’gunakan jquery
smoga ente makin murah rejeki deh
( amien )
trima kasih mas atas infonya