Menelusuri Permasalahan jQuery AJAX CORS (Cross-Origin Resource Sharing)

First of all, mengenai tentang CORS bisa membaca referensinya di sini, bagi yang belum mengenalnya bisa membacanya terlebih dahulu.

Cross-origin resource sharing (CORS) is a mechanism that allows many resources (e.g. fonts, JavaScript, etc.) on a web page to be requested from another domain outside the domain the resource originated from. In particular, JavaScript’s AJAX calls can use the XMLHttpRequest mechanism. Such “cross-domain” requests would otherwise be forbidden by web browsers, per the same origin security policy. CORS defines a way in which the browser and the server can interact to determine whether or not to allow the cross-origin request. It is more useful than only allowing same-origin requests, but it is more secure than simply allowing all such cross-origin requests.

Saat ini saya menghadapi suatu kasus di mana saya melakukan request POST melalui AJAX terhadap domain yang berbeda. Prosesnya seperti ini:

  1. domainsatu.com melakukan request POST menggunakan AJAX terhadap domaindua.com
  2. domaindua.com memproses request POST tersebut, lalu memberikan output atau return value terhadap domainsatu.com
  3. domainsatu.com mendapatkan output atau return value dari domaindua.com.

Continue reading Menelusuri Permasalahan jQuery AJAX CORS (Cross-Origin Resource Sharing)

Optimasi Kode JavaScript menggunakan JavaScript Minifier

JavaScript Minifier terfavorit yang sering saya digunakan yaitu JavaScript Minifier. Memang masih banyak pilihan lainnya jika browsing melalui google. Akan tetapi salah satu keunggulan minifier tersebut dibandingkan dengan yang lainnya, yaitu tidak menimbulkan error ketika saya menyisipkan kode PHP didalam kode JavaScript yang akan di-minify.

Untuk melakukan un-minify, bisa menggunakan JS Beautifier. Terkadang saya suka mempelajari source code website lain, yang tentunya source code client-side, seperti JavaScript salah satunya. Dengan begitu saya bisa memperoleh pengalaman atau teknik baru dalam membangun website. Akan tetapi untuk JavaScript hampir semua source code yang tampil sudah dalam keadaan minified. Alasannya salah satunya untuk mengoptimalkan load performance suatu website. Namun akan menjadi sulit untuk dibaca jika dalam keadaan minified untuk mempelajarinya. Maka dari itu sangatlah berguna tools untuk un-minify ini bagi para newbie yang ingin belajar mempelajari source code. 😉

Links:

  1. JavaScript Minifier : http://javascript-minifier.com/
  2. JS Beautifier : http://jsbeautifier.org/

Cara Encode JSON Object (Manual Parse)

Sebelumnya ada posting yang membahas JSON mengenai cara melakukan Encode & Decode, dan posting ini merupakan pelengkap dari posting sebelumnya.

Saya melakukan encode dengan melakukan json_encode($array, JSON_FORCE_OBJECT), penambahan parameter JSON_FORCE_OBJECT berfungsi agar array key tetap “utuh” dalam format JSON.

Namun, terjadi permasalahan ketika saya mencoba pada PHP versi dibawah 5.3, yaitu versi 5.2.6. Konstanta atau parameter JSON_FORCE_OBJECT tidak dikenal alias ERROR! Karena parameter tersebut tersedia hanya pada versi 5.3 keatas.

Pada saat itu bukanlah hal yang mungkin untuk melakukan upgrade PHP ke versi 5.3 keatas karena sistem operasi pada Server yang digunakan tidak memiliki repositori PHP versi 5.3 keatas, sehingga diperlukan upgrade sistem operasi terlebih dahulu untuk bisa melakukan update ke PHP versi 5.3.

Solusinya? Array di parsing secara manual kedalam bentuk object, seperti ini:

<?php

$json = json_encode((object)$array);

?>

Selesai 😉

Cara melakukan JSON Encode & Decode pada PHP

Pada ReST, seringkali kita menggunakan format JSON atau XML untuk melakukan representasi record pada database.

Pada saat menggunakan format JSON dalam PHP, saya memiliki kasus sebuah array yang memiliki key default, seperti ini:

<?php

$default = array('Spirit', 'Walk', 'Run', 'Jump');

?>

Array Key tersebut secara default tentu akan sama seperti ini:

<?php

$default = array(0 => 'Spirit', 1 => 'Walk', 2 => 'Run', 3 => 'Jump');

?>

Permasalahannya adalah ketika array tersebut di encode kedalam format JSON menggunakan function json_encode(), array key tersebut “hilang”, menjadi seperti ini:

["Spirit","Walk","Run","Jump"]

Salah satu solusinya agar array key tersebut bisa “dibawa” kedalam format JSON, array tersebut harus berbentuk object, dengan menambahkan konstanta JSON_FORCE_OBJECT sebagai parameter function json_encode(), menjadi:

<?php

$encode = json_encode($default, JSON_FORCE_OBJECT);

?>

Sehingga menghasilkan:

{"0":"Spirit","1":"Walk","2":"Run","3":"Jump"}

Dengan menjadikannya object, array key tersebut akan “dibawa” dalam format JSON. 😀

Lalu untuk melakukan proses decode format JSON object tersebut ke dalam bentuk array, gunakan paramater TRUE pada function json_decode(), seperti ini:

<?php

$decode = json_decode($encode, TRUE);

?>

Hasil decode ketika dilakukan var_dump(), kembali menjadi array, seperti ini:

array(4) {
  [0]=>
  string(6) "Spirit"
  [1]=>
  string(4) "Walk"
  [2]=>
  string(3) "Run"
  [3]=>
  string(4) "Jump"
}

Selamat mencoba! 😀