Home > Ajax, Info, JavaScript, PHP > Implementasi JSON pada Aplikasi Ajax

Implementasi JSON pada Aplikasi Ajax

February 15th, 2009 Leave a comment Go to comments

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… ^_^

  1. February 16th, 2009 at 15:30 | #1

    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)

  2. February 16th, 2009 at 18:32 | #2

    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.

    var test = eval(response.responseText)

    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.

  3. agus
    March 25th, 2009 at 09:22 | #3

    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 …

  4. March 25th, 2009 at 09:45 | #4
    echo $json->encode($data);

    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?

  5. agus
    March 25th, 2009 at 22:20 | #5

    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 ….

  6. March 27th, 2009 at 19:56 | #6

    klo ajax konvensional begini

    http_request.onreadystatechange = function() {
        if (http_request.readyState == 4) {
          if (http_request.status == 200) {
            var json = eval(http_request.responseText);
            // proses json disini karena isi variable json sudah berupa nilai hasil response php, bisa berupa array atau nilai2 biasa
          } else {
            alert('There was a problem with the request.');
          }
        }
    };
  7. agus
    March 28th, 2009 at 20:56 | #7

    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 )

  8. firsan
    November 4th, 2009 at 08:25 | #8

    trima kasih mas atas infonya

  1. June 23rd, 2010 at 11:04 | #1