Tampilkan postingan dengan label ajax. Tampilkan semua postingan
Tampilkan postingan dengan label ajax. Tampilkan semua postingan

Senin, 10 Agustus 2015

Belajar Ajax tanpa jQuery (part3)

Setelah kemarin kita sudah belajar tentang XMLHttp dan pengiriman request ke server menggunakan method POST dan GET. Sekarang, kita akan belajar bersama tentang "Respon Server".

Respon Server

Untuk mendapatkan respon dari server, kita dapat menggunakan responeText atau responeXML. Sekedar penjelasan, responText berarti kita menerima balasan dari server dalam bentuk text, sedangkan responeXML berarti kita menerima balasan dari server dalam bentuk data XML. Silahkan kalian pilih dengan bijak yang mana yang akan kalian gunakan.

Menggunakan ResponeText

Jika balasan dari server berupa teks dan bukan data XML, maka gunakan responeText. ResponeText akan mengembalikan bentuk data dari server menjadi teks. Seperti yang saya gunakan pada contoh di part pertama.

document.getElementById("myDiv").innerHTML=xmlhttp.responseText;

Menggunakan ResponeXML

Jika balasan dari server bukan berupa teks dan kalian ingin menguraikannya menjadi XML, maka gunakan responeXML. Sebagai contoh, kita akan menggunakan contoh yang sudah ada di w3schools.com. yaitu menggunakan data xml cd_catalog.xml dan kode html :

<!DOCTYPE html>
<html>
  <head>
    <script>
      function loadXMLDoc(){
        var xmlhttp;
        var txt,x,i;
        if(window.XMLHttpRequest){
          xmlhttp=new XMLHttpRequest();
        }else{
          xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
        }
        xmlhttp.onreadystatechange=function(){
          if (xmlhttp.readyState==4 && xmlhttp.status==200){
            xmlDoc=xmlhttp.responseXML;
            txt="";
            x=xmlDoc.getElementsByTagName("ARTIST");
            for (i=0;i<x.length;i++){
              txt=txt + x[i].childNodes[0].nodeValue + "<br>";
            }
            document.getElementById("myDiv").innerHTML=txt;
          }
        }
      xmlhttp.open("GET","cd_catalog.xml",true);
      xmlhttp.send();
      }
    </script>
  </head>
  <body>
    <h2>My CD Collection:</h2>
    <div id="myDiv"></div>
    <button type="button" onclick="loadXMLDoc()">Get my CD collection</button>
  </body>
</html> 

Event onreadystatechange

Ketika perminataan ke server dikirim, kita bisa melakukan  beberapa tindakan berdasarkan respon dari server.
Event onreadystatechange akan ter-eksekusi setiap ada perubahan readyState.
Properti readyState itu membawa status dari XMLHttpRequest.

PropertiDeskripsi
onreadystatechangeSebuah fungsi yang otomatis akan terpanggil tiap kali property readyState berubah
readyStatePemegang status dari XMLHttpRequest, Berubah dari 0 sampai 4
0 : Request di-inisialisasikan
1 : Koneksi ke server didirikan
2 : Permintaan diterima server
3 : Permintaan diproses server
4 : Permintaan telah diterima dan respon siap
Status200 : OK
404 : PNF(Page Not Found)
Kita dapat menentukan readiState dan status-nya di :


xmlhttp.onreadystatechange=function(){
  if (xmlhttp.readyState==4 && xmlhttp.status==200){
    document.getElementById("myDiv").innerHTML=xmlhttp.responseText;
  }
}
Note : event onreadystatechange dieksekusi sebanyak lima kali (0-4), yaitu setiap perubahan pada readyState.

Callback

Callback adalah fungsi yang menyalurkan parameter ke fungsi lain.

Jika kita memiliki lebih dari satu tugas AJAX di website kita, maka kita harus membuat satu fungsi standar untuk menciptakan objek XMLHttpRequest, dan memanggilnya untuk setiap tugas AJAX.
 
Fungsi yang dipanggil harus berisi URL dan apa yang harus dilakukan pada onreadystatechange (yang mungkin berbeda untuk setiap panggilan). Ini tentunya sangat berguna untuk menyingkat waktu penulisan code bukan?

Sekian untuk hari ini. Tapi, untuk kalian yang belum memahami tentang callback bisa melihat contoh callack dari www.w3schools.com ini :



<!DOCTYPE html>
<html>
<head>
<script>
var xmlhttp;
function loadXMLDoc(url,cfunc)
{
if (window.XMLHttpRequest)
  {// code for IE7+, Firefox, Chrome, Opera, Safari
  xmlhttp=new XMLHttpRequest();
  }
else
  {// code for IE6, IE5
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
xmlhttp.onreadystatechange=cfunc;
xmlhttp.open("GET",url,true);
xmlhttp.send();
}
function myFunction()
{
loadXMLDoc("ajax_info.txt",function()
  {
  if (xmlhttp.readyState==4 && xmlhttp.status==200)
    {
    document.getElementById("myDiv").innerHTML=xmlhttp.responseText;
    }
  });
}
</script>
</head>
<body>

<div id="myDiv"><h2>Let AJAX change this text</h2></div>
<button type="button" onclick="myFunction()">Change Content</button>
</body>
</html>

Semoga bermanfaat.
Kali ini gak ada contoh yang bisa di-download lagi.

Rabu, 05 Agustus 2015

Belajar Ajax tanpa jQuery (part2)

Kemarin kita udah sampai pada syntax untuk mengirim data ke server menggunakan open() dan send(). Tetapi, ada pilihan menggunakan method GET atau  POST. Jadi, kita menggunakan yang mana? Seperti kata favorit guru saya di sekolah, "timbul, pertanyaan."

GET ATAU POST?

Saya lebih merekomendasikan menggunakan GET, karena lebih sederhana dan cepat dibandingkan dengan POST. Selain itu, GET juga bisa digunakan dalam banyak kasus.

Meski begitu, lebih baik menggunakan POST ketika : 
  • File cache bukanlah pilihan untuk digunakan (memperbarui file atau database di server)
  • Mengirim data yang berukuran besar ke server (POST tidak memiliki keterbatasan ukuran)
  • Mengirim input pengguna (yang dapat berisi karakter yang tidak diketahui), POST lebih kuat dan aman daripada GET

 MENGGUNAKAN GET

Contoh :

xmlhttp.open("GET","demo_get.php",true);
xmlhttp.send();
 
Dengan contoh di atas, mungkin kita akan mendapatkan hasil cache.
Untuk menghindariya, bisa ditambahkan ID unik ke URL seperti ini (saya sandiri kurang paham) :

xmlhttp.open("GET","demo_get.php?t=" + Math.random(),true);
xmlhttp.send();

Kalau untuk mengirim informasi menggunakan GET, tambahkan informasi ke dalam URL.

xmlhttp.open("GET","demo_get2.php?nama=Bayu&alamat=Jateng",true);
xmlhttp.send();

MENGGUNAKAN POST

Contoh penggunaan POST yang sederhana.

xmlhttp.open("POST","demo_post.php",true);
xmlhttp.send();

Untuk POST data yang seperti bentuk HTML, tambahkan header HTTP dengan setRequestHeader (). Tentukan data yang ingin Anda kirim di method send (): 

xmlhttp.open("POST","ajax_test.php",true);
xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
xmlhttp.send("nama=Henry&alamat=Jateng");

Penjelasan : 

setRequestHeader(header, value) = menambahkan HTTP Header pada pengiriman permintaan
header = spesifikasi nama header
value  = spesifikasi isi header

URL

Parameter url dari metode open (), adalah sebuah alamat ke file di server:

xmlhttp.open("GET","ajax_test.php",true);

Berbagai jenis file dapat digunakan, seperti .txt dan .xml, atau server file scripting seperti asp dan php (yang dapat melakukan tindakan pada server sebelum mengirim respon kembali).

 ASYNCHRONOUS

AJAX singkatan Asynchronous JavaScript dan XML, dan objek XMLHttpRequest agar berjalan sebagai AJAX, parameter async metode open () harus diatur ke benar: 

xmlhttp.open("GET","ajax_test.php",true);

Mengirim permintaan asynchronous merupakan kemajuan besar dalam pengembangan web. Banyak tugas yang dilakukan pada server yang sangat memakan waktu. Sebelum AJAX, operasi ini bisa menyebabkan aplikasi menggantung atau berhenti.
 
Dengan AJAX, JavaScript tidak harus menunggu respon dari server, tetapi dapat:
  • mengeksekusi script lain sambil menunggu respon dari server
  • berurusan dengan respon ketika respon siap

ASYNC = TRUE

Bila menggunakan async = true, tentukan fungsi yang dieksekusi ketika respon siap dalam onreadystatechange: 

xmlhttp.onreadystatechange=function(){
  if (xmlhttp.readyState==4 && xmlhttp.status==200){
    document.getElementById("teks").innerHTML=xmlhttp.responseText;
  }
}
  xmlhttp.open("GET","teks.txt",true);
  xmlhttp.send();

Untuk menggunakan async = false, cukup ubah parameter ketiga di method open().

xmlhttp.open("GET","teks.txt",false);

  ASYNC = FALSE

Saya tidak meyarankan penggunaan async = false, tapi untuk request data yang kecil masih bisa digunakan.
Ingat bahwa JavaScript TIDAK akan mengeksekusi perintah sampai respon server siap. Jika server sibuk atau lambat, aplikasi akan hang atau berhenti.
Catatan: Bila Anda menggunakan async = false, jangan menulis fungsi onreadystatechange - cukup dengan menempatkan script send () pernyataan:

xmlhttp.open("GET","teks.txt",false);
xmlhttp.send();
document.getElementById("teks").innerHTML=xmlhttp.responseText;


Sekian  dulu untuk hari ini, tunggu kelanjutannya besok.
 --------
Note : Hari ini gak ada contohnya yang bisa di download, tapi bisa menggunakan contoh yang kemarin sudah saya sertakan di part1.
sumber : www.w3schools.com 

Selasa, 04 Agustus 2015

Belajar Ajax tanpa jQuery (part1)

Sebelum kita melangkah lebih jauh untuk mempelajari AJAX, alangkah lebih baik jika kita mengenal AJAX terlebih dahulu. Denger-denger sih, kalau gak kenal maka gak sayang, kalau gak sayang maka gak cinta, kalau gak cinta maka gak bisa menikmati setiap inci dari tubuhnya... So, apa itu AJAX?

APA ITU AJAX?

AJAX bukanlah bahasa pemrograman baru, tapi sebuah cara baru untuk menggunakan standar yang sudah ada.

AJAX adalah singkatan dari "Asynchronous JavaScript and XML". Kalau diterjemahin sesuai bahasanya itu rumit, sulit jelasinnya. Pokoknya, AJAX itu adalah teknik untuk membuat halaman web yang cepat dan dinamis. Kenapa begitu? Itu karena AJAX digunakan untuk memperbarui bagian dari halaman web, tanpa perlu reload. Sehingga AJAX memungkinkan halaman web diperbarui secara tidak singkron(asynchronous) dengan bertukar data dalam jumlah kecil dengan server di belakang layar. Kalau halaman web klasik, (yang tidak menggunakan AJAX) diharuskan me-reload seluruh halaman jika konten ingin dirubah.

Contoh aplikasi yang menggunakan AJAX adalah Google Maps, Google Search, Google Mail dan lain-lain.

BAGAIMANA AJAX BEKERJA?

Singkatnya, ketika terjadi sebuah event tertentu pada halaman web, (contohnya adalah ketika mengetikkan kata kunci di Google Search) sebuah fungsi akan membuat sebuah XMLHttpRequest dan mengirimkannya pada server. Kemudian, server akan memproses permintaan dari XMLHttpRequest. Setelah itu, server akan memberikan balasan (berupa data) dan mengirimkannya kepada browser. Selanjutnya, balasan tersebut akan diproses oleh browser menggunakan javascript dan... Tada! Halaman sudah ter-update (muncul berbagai macam kalimat yang berhubungan dengan kata kunci yang sudah kita ketikkan). Gak kepanjangan, kan? Lebih jelasnya, liat gambar dibawah.




Kok bahasa inggris? credit asli dari www.w3schools.com.

STANDAR AJAX

Wuih... jangan langsung mikir sulit lho, ya! Pada dasarnya, AJAX itu merupakan kombinasi dari beberapa hal yang gak rumit-rumit amat kok, yaitu :
  • Objek XMLHttpRequest (untuk pertukaran data asynchronous dengan server)
  • JavaScript / DOM (untuk menampilkan / berinteraksi dengan informasi)
  • CSS (untuk desain, mau make atau gak terserah)
  • XML/JSON (digunakan sebagai format untuk mentransfer data, bisa juga pakai teks biasa, *.txt)
Biar lebih jelas, kita akan membuat sebuah aplikasi AJAX yang amat sangat sederhana.

Pertama-tama, kita buat sebuah teks dengan nama "teks.txt"(tanpa tanda petik). Jangan lupa buat diisi.
Contohnya, diisi begini :
"AJAX is about updating parts of a web page, without reloading the whole page.
AJAX adalah tentang memperbarui sebagian dari halaman web, tanpa me-reload seluruh halaman."

Kemudian, waktunya AJAX! Buat sebuah file dengan nama "ajax.html". Terus...? Tulis!

<!DOCTYPE html>
<html>
<head>
</head>
<body>
<div id="teks"><h2>Ajax akan mengubah teks ini...</h2></div>
<button type="button" onclick="loadXML()">Ubah Konten</button>
</body>
</html>
Aplikasi AJAX yang akan kita buat menggunakan sebuah div dan sebuah tombol. Bagian div akan digunakan untuk menampilkan informasi balasan dari server. Sedangkan, tombol (satu-satunya) itu digunakan untuk memanggil fungsi loadXML saat diklik. Lalu, script yang paling penting. Tulis script berikut di antara tag <head></head>. Seperti ini :

<head>
<script>
function loadXML(){
.... Di sinilah script AJAX akan terlahir...
}
</script>
</head>

Kemudian, buat Objek XMLHttpRequest. Karena inilah kunci utama AJAX. Tapi, apa itu Objek XMLHttpRequest? Kalau ada yang kurang paham sama penjelasan di atas, kita bahas lagi deh. Objek XMLHttpRequest adalah objek yang digunakan untuk pertukaran data dengan server di belakang layar. Inilah yang memungkinkan kita memperbarui halaman web tanpa me-reload seluruh halaman.
Semua browser modern  (IE7+, Firefox, Chrome, Safari, and Opera) sudah mendukung objek XMLHttpRequest. Sedangkan untuk IE5 dan IE6 menggunakan ActiveXObject.

Sintak untuk membuat sebuah objek XMLHttpRequest:
variable =new XMLHttpRequest();
Versi lama dari Internet Explorer (IE6 dan IE5) menggunakan Object ActiveX:

variable =new ActiveXObject("Microsoft.XMLHTTP");
Agar bisa digunakan oleh semua browser modern, termasuk IE5 dan IE6, periksa apakah browser mendukung objek XMLHttpRequest. Jika tidak, maka menggunakan ActiveXObject.

var xmlhttp;
if(window.XMLHttpRequest){// kode untuk IE7+, Firefox, Chrome, Opera, Safari
  xmlhttp=new XMLHttpRequest();
}else{// kode untuk IE6 & IE5
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}

MENGIRIM PERMINTAAN UNTUK SERVER

Setelah objek XMLHttpRequest sudah dibuat, maka tinggal dikirim. Untuk mengirim permintaan ke server, kita menggunakan open() dan send() yang merupakan method dari XMLHttpRequest.

xmlhttp.open("GET","teks.txt",true);
xmlhttp.send();

Penjelasan :

open(method,url,async) = spesifikasi pengiriman permintaan, url, dan apakah permintaan akan ditangani secara singkron atau tidak.
  • method : tipe pengiriman permintaan : GET atau POST
  • url : lokasi file yang akan memproses permintaan di server.
  • async : true (asyncronous) atau false(syncronous)
send(string) = mengirim permintaan ke server
  • string : hanya digunakan jika menggunakan method POST
bersambung... ke part2
------
kalau mau download contohnya, klik di sini
kalian akan lebih mudah memahaminya kalau udah obrak-abrik source code-nya.
sumber : www.w3schools.com