BAB 14 AJAX. Menyerupai J2EE, AJAX adalah 2 hal yang digabungkan : merupakan sebuah teknologi, sekaligus arsitektir pemrograman.

dokumen-dokumen yang mirip
AJAX. Pemrograman Web. Rajif Agung Yunmar, S.Kom

AJAX. Pemrograman Web 1. Asynchronous JavaScript and XML. Genap

Pemrograman Internet dengan AJAX (Asynchronous JavaScript And XML)

Modul 5 AJAX TUJUAN PRAKTIKUM : PERLENGKAPAN PRAKTIKUM LANDASAN TEORI. Latar Belakang Munculnya Ajax. Definisi Ajax.

Persiapan. Jalankan server apache dari XAMPP control panel Ekstrak file yang telah dibagikan, Salin folder week_8 ke htdocs

Pengenalan JavaScript

Analisis dan Implementasi Validasi Form Berbasis Web dengan Menggunakan AJAX (Asynchronous JavaScript And XML)

By Desrizal. Pengenalan AJAX

LAPORAN RESMI PRAKTIKUM II WEB DESAIN PENGENALAN JAVASCRIPT

E-trik Ajax. Ajax dan MySQL. Dedi Alnas

Membuat JSP dan Servlet Sederhana

SERVLET. 5.1 Membuat Program Servlet

Mahasiswa memahami Pengertian, fungsi, aplikasi untuk menjalankan JavaScript, cara menjalankan kode, cara memasukkan kode JavaScript ke dalam HTML

CHAPTER 1 BASIC PROGRAMING WITH PHP AND JAVASCRIPT (AJAX) ( Janitra Panji Satria Soekarta ) UNIKU Pemrograman Web 2

LAPORAN RESMI. PRAKTIKUM TEKNOLOGI WEB Pengenalan JavaScript

5.2 Keuntungan dan Kelemahan Cookie

Pertemuan Ke-5 Client Side Scripting (JavaScript) S1 Teknik Informatika - Unijoyo 1

HTML DOM. Pemrograman Web 1. Genap

STMIK AMIKOM YOGYAKARTA YOGYAKARTA 2008 WIDHIARTA, S. KOM

PEMROGRAMAN WEB 09 JavaScript Lanjut

Mengenal visual designer dan IntelliSense

TUGAS III PEMROGRAMAN BERBASIS WEB ARTIKEL JAVASCRIPT

HTML DOM #1 Yosef Murya Kusuma Ardhana. ST., M.Kom

AJAX Tutorial. Contoh AJAX Dasar 1

1. BAB III 2. LANDASAN TEORI

AJAX Framework. Pemrograman Web 1. Genap

Hal yang harus diperhatikan dalam penggunaan AJAX adalah: XHTML dan CSS digunakan untuk menandai dan mempercantik tampilan informasi.

Membuat Form Kontak yang Indah dan Atraktif dengan AJAX [Part 5]

Generated by Foxit PDF Creator Foxit Software For evaluation only. 16/09/ :50

MODUL PEMOGRAMAN WEB II STMIK IM BANDUNG MODUL PEMOGRAMAN WEB II. Oleh: CHALIFA CHAZAR. Chalifa Chazar edu.script.id

Validasi Form. Contoh Validasi Form

Pemrograman Web Week 4. Team Teaching

Otodidak Pemrograman JavaScript

POLITEKNIK ELEKTRONIKA NEGERI SURABAYA

Membuat Polling Sederhana Dengan Ajax

JavaScript. Pemrograman Web 1. Genap

Pemrograman Web. Page 188

Pemrograman Web. Javascript. Indrato, S.Kom Introduction. Penyisipan JS dalam HTML. PemrogramanWeb.2009

Upload File dengan Metode AJAX

1. Manakah pernyataan yang benar di bawah ini? Method service hanya dipanggil saat pertama kali servlet dieksekusi.


PEMROGRAMAN WEB. Agussalim

BAB I PENDAHULUAN LATAR BELAKANG CONTOH KASUS. Diktat Mata Kuliah Aplikasi Teknologi Online Oleh : Andri Heryandi

Mengenal JavaScript dan Struktur JavaScript 1

BAB II LANDASAN TEORI. diperlukan dalam pembangunan website e-commerce Distro Baju MedanEtnic.

[FORM AND FRAME] PEMROGRAMAN WEB MODUL [ O L E H : Y U N I T A P R A S T Y N I N G S I H, S. K O M ]

Atribut ACTION tempat menspesifikasikan URL yang akan digunakan sebagai pemroses field input form.

AJAX (Asynchronus JavaScript and XML) Andi Sunyoto Dosen STMIK AMIKOM Yugyakarta

10/04/2014. Oleh: Fiftin Noviyanto, S.T., M.Cs. Form Server Side Scripting

Tag dasar yang akan kita gunakan untuk membuat form di HTML adalah tag form, input, textarea, select dan option.

BAB III LANDASAN TEORI

Javascript merupakan suatu bahasa yang perkembangannya lambat di bandingkan dengan Java yang berkembang sangat cepat. Di Javascript kita tidak

JavaScript. Pemrograman Web 1. Genap

Penanganan Formulir PHP. Pemrograman Web - Penanganan Formulir. Agi Putra Kharisma, ST., MT.

DOM (Document Object Model) dan Event

Pemrograman Basis Data Berbasis Web

AJAX dengan jquery Part 1

A. Tujuan B. Dasar Teori 1. Pemrosesan Form 2. Konsep Penggunaan Tag <form> pada HTML

MODUL PRAKTIKUM PEMROGRAMAN WEB

Pemrograman Web Lanjut

MODUL 1 PENGENALAN HTML

PRAKTIKUM. Rekayasa Web. Modul 6: Restful API Server & Client Codeigniter. Laboratorium Teknik Informatika Universitas Pasundan

1. Praktikan mampu mendeskripsikan cara pengiriman data ke server melalui form. 3. Praktikan mengetahui Control Text dan penggunaannya pada form

KURSUS ONLINE JASA WEBMASTERS

WEB DINAMIS 1 PENANGANAN FORM. Agustina Purwatiningsih., S.Kom

Pemrograman Web Week 5. Team Teaching

IMPLEMENTASI METODE ASYNCHRONOUS JAVASCRIPT AND XML (AJAX) PADA PEMBUATAN WEBSITE UNIVERSITAS SAM RATULANGI

P - 6 Bab 4 : HTML (Hypertext Markup Language)

Pemrograman Basis Data Berbasis Web

Penerapan Konsep One Layer Website Berbasis JavaScript

BAB 1 PENDAHULUAN. 1.1 Latar Belakang

Dasar Pemrograman Web. Pemrograman Web. Adam Hendra Brata

Materi 2 Komputer Aplikasi IT (KAIT) 2 SKS Semester 1 S1 Sistem Informasi UNIKOM 2014 Nizar Rabbi Radliya nizar.radliya@yahoo.com

Oleh : Dosen Pembimbing : Umi Laili Yuhana, S.Kom, M.Sc Hadziq Fabroyir, S.Kom

M.K. Pemrograman Web (AK ) Konsep Pemrograman Web

PEMROGRAMAN WEB 08 JavaScript Dasar

BAB 5 MEMAHAMI METHOD GET DAN POST PADA PHP

Komputer Perkantoran. Internet. Salhazan Nasution, S.Kom

BAB 3 PERANCANGAN DAN IMPLEMENTASI APLIKASI PETA UI BERBASIS GOOGLE MAPS

Internet & Web. Elfan Nofiari. Departemen Teknik Informatika Institut Teknologi Bandung. Page 1. IF-ITB/EN/1-Mar-04 IF3292 Internet & Web

Form Mampu membuat form dan dan mengirim data ke halaman lain Pengaturan Validasi dan keamanan form. Sesi 5

Pengembangan Web. Ramos Somya

YUPOCOM COMPUTER EDUCATION. JavaScript. 1. Mengenal JavaScript Hal yang harus diketahui Apa itu JavaScript. 2.

M.K. Pemrograman Web (AK ) Konsep Pemrograman Internet

BAB III IDENTIFIKASI DAN KLASIFIKASI WEB LOG

E-trik Ajax. Database MySQL. Dedi Alnas

Konsep Pemrograman Internet dan Web

Mengenal Pemrograman Web Dengan JSP

Komputer Perkantoran. Salhazan Nasution, S.Kom

1. Sejarah Javascript

Kapita Selekta (KBKI82127, 2 sks) Materi : Penanganan Form

Pemrograman Basis Data Berbasis Web

Interactive Broadcasting

LAPORAN PRAKTIKUM TEKNOLOGI FRAMEWORK PERTEMUAN KE 1

Form identik dengan formulir

MODUL 3 INTERNET PROGRAMMING : PHP 3

DESIGN WEB. D3 TKJ

1. Mahasiswa mampu membuat form pada dokumen HTML. 2. Mahasiswa memahami cara penggunaan dari fasilitas Form pada halaman dokumen HTML

Pengenalan Perancangan Web 2017

MODUL 5 GET & POST Pemograman Web Teknik Informatika Universitas Pasundan Bandung 2016/2017

Transkripsi:

BAB 14 AJAX 14.1 PENDAHULUAN Hingga saat ini, aplikasi web mengikuti alur arsitektur berikut : satu satunya cara dalam merepresentasikan content baru (sebagai contoh, dalam merespon interaksi antara user dengan halaman pada aplikasi) dilakukan dengan cara mengirimkan request kepada server dan menampilkan halaman baru pada user. Terdapat teknologi client side scripting (JavaScript, VBScript, dan sebagainya) yang memberikan gambaran pada user bahwa mereka telah membuka content baru dengan sebuah click pada tombol. Namun, teknologi scripting tersebut hanya dapat memodifikasi content yang terdapat pada sebuah halaman; teknologi tersebut juga hanya dapat bekerja terhadap informasi yang telah dikirimkan pada client. Bermacam solusi telah dibuat sebelumnya, yang bertujuan untuk mengubah paradigma yang ada, namun beberapa diantaranya bersifat komersial (Microsoft memiliki sebuah solusi yang hanya berfungsi dengan Internet Explorer), sulit untuk diprogram, dan tidak dapat diakses dengan mudah. Kemudian hadirlah AJAX sebagai penyelesaiannya. 14.2 AJAX Menyerupai J2EE, AJAX adalah 2 hal yang digabungkan : merupakan sebuah teknologi, sekaligus arsitektir pemrograman. 14.2.1 AJAX sebagai sebuah teknologi AJAX adalah singkatan dari Asynchronous JavaScript and XML, yang dibuat dari serangkaian teknologi dengan berbagai kemampuan : JavaScript, XML dan sebuah method komunikasi asinkron antara client dan server. 3 teknologi yang saling berinteraksi : JavaScript menangkap isyarat, gerak serta aksi. Sebagaimana pada situasi yang mungkin terjadi, JavaScript menggunakan jalur komunikasi pada server (object JavaScript dengan nama XMLHttpRequest) untuk memanggil method yang tersimpan pada server dan menggunakan XML sebagai mekanisme pengiriman data. Jika JavaScript pada client telah menerima respon dari server, maka JavaScript akan menggunakan kemampuan bawaannya untuk memanipulasi struktur DOM halaman untuk menambahkan content yang didapat dari server. Perubahan yang terjadi pada struktur DOM kemudian diterjemahkan oleh browser pada client, sehingga meningkatkan efek interaktivitas pada user. AJAX 1

14.2.2 AJAX sebagai sebuah Arsitektur Pada awalnya AJAX dibuat sebagai sebuah rangkaian dari teknologi, namun kemudian AJAX mengalami perkembangan. Sebagai contoh, adanya aplikasi web yang tidak menggunakan XML dalam mentransfer data dari client ke server. Cara tersebut dilakukan dengan menggunakan object XMLHttpRequest. Berdasarkan realita di atas, beberapa pihak mendefinisikan sebagai paradigma baru dalam pemrograman, disamping teknologi yang menyediakan fungsionalitas. Mari kita bahas lebih mendalam tentang arsitektur AJAX. Pengembang telah mengembangkan web programming sebelum hadirnya AJAX : action dari user yang membutuhkan data dari server ditampilkan dalam halaman yang digunakan, dimana data request dari user dikirimkan menuju server. Setelah mengolah halaman tersebut, server menampilkan halaman baru bagi user yang mengandung hasil dari proses sebelumnya. Permasalah dari macam arsitektur tersebut adalah lambat dan cukup memakan waktu, terutama bila dibandingkan dengan aplikasi desktop. Aplikasi desktop mampu merespon cepat atas request dari user, aplikasi ini tidak memproses ulang masing masing komponen interface yang akan ditampilkan sebagai respon. AJAX menggunakan arsitektur pemrograman tersebut pada aplikasi Web. Daripada memberikan sebuah halaman penuh pada server dan mendapatkan pula sebuah halaman penuh sebagai hasil operasi, AJAX mengijinkan kita untuk mengirimkan request dalam ukuran yang lebih kecil pada server. Halaman yang terpakai hanya termodifikasi untuk menampilkan hasil, bukan tergantikan dengan sebuah halaman baru. Faktor penting yang lain dari arsitektur AJAX adalah request dan response dijalankan secara asinkron : AJAX tidak melarang user untuk melakukan proses lain pada halaman yang dipakai. User dapat mengisi dan menggunakan area lain pada halaman, sedangkan AJAX bekerja pada background. Yang terakhir, AJAX mengijinkan user untuk berinteraksi dengan server sebagai respon terhadap seluruh hal yang dilakukan oleh user. Arsitektur yang ada sebelumnya hanya mengijinkan kita untuk berkomunikasi dengan server pada saat user menekan tombol atau link yang akan mengirim data pada halaman. AJAX memperbolehkan untuk me-request data baru dari server dalam bentuk mouseovers, keypress dan even lain yang dikenali oleh JavaScript. AJAX 2

14.2.3 Proses yang dilakukan oleh AJAX Mari kita perhatikan contoh nyata yang menunjukkan bagaimana AJAX memperkaya interaktivitas user dan bagaimana kita menggunakannya dalam aplikasi. <html> <head> <title>registration Form</title> </head> <body> <H1> Welcome new user! </H1> Please enter your information in the fields below <form action="/submit"> Name : <input type="text" name="name"/> <br/> Address : <input type="text" name="address"/> <br/> City : <select name="city"> <option>select One from List</option <option value="quezon City">Quezon City</option> </select> <br/> Zip Code : <input type="text" name="zip" size="4"/> <br/> <input type="submit" value="submit"/> </form> </body> </html> AJAX 3

Contoh di atas adalah contoh sederhana dari form registrasi. Namun di sini terdapat suatu permasalahan, tidak semua user mengetahui nomor zip code. Kita gunakan contoh diatas sebagai titik awal perjalanan kita di AJAX. Akan dikenalkan teknik penggunaan AJAX yang akan membuat halaman mengisikan sendiri field zip code berdasarkan City yang dimasukkan oleh user. 14.2.4 Menyiapkan halaman form. Pertama-tama, kita harus mempersiapkan HTML yang akan digunakan oleh user. Jika kita akan menggunakan AJAX sebagai respon user input pada field City, perlu ditambahkan sebuah event listener pada field City. Akan ditambahkan juga atribut id pada elemen form hal ini akan memudahkan pekerjaan kita. Menggunakan event listener pada input field City merupakan hal yang mudah : hanya perlu meregistrasikan fungsi JavaScript yang akan dipanggil pada events. Dibawah ini adalah HTML form yang disempurnakan :...... Address : <input type="text" name="address"/> <br/> City : <select id= city name="city" onchange= updatezip(this.value) > <option>select One from List</option <option value="quezon City">Quezon City</option> </select> <br/> Zip Code : <input id= city type="text" name="zip" size="4"/> <br/> Dengan perubahan diatas, browser akan memanggil fungsi updatezip tiap kali user memilih value dari daftar City. 14.2.5 Membuat sebuah instance object XMLHttpRequest Sekarang saatnya menuliskan kode fungsi updatezip yang akan menangani komunikasi terhadap server dan mengupdate value zip. Sebagaimana yang dibahas sebelumnya, JavaScript mengijinkan server untuk berkomunikasi dengan menggunakan sebuah object yang dikenal dengan XMLHttpRequest. Permasalahan berikutnya adalah membuat object tersebut. Pembuatan object ini tidak semudah menambahkan baris kode : var xmlrequest = new XMLHttpRequest(); Kode diatas hanya dapat bekerja pada Mozilla, FireFox, Safari, Konqueror, NetScape dan Opera, namun tidak pada Internet Explorer. IE adalah browser pertama yang menggunakan fungsi semacam ini, namun dibuat dari proprietary object ActiveX AJAX 4

(sebagai lawan dari JavaScript object). Terlebih lagi, method yang digunakan untuk membuat XMLHttpRequest berbeda pada IE 5.0+ dibandingkan dengan versi-versi sebelumnya. Supaya dapat digunakan oleh browser-browser yang ada, gunakan kode berikut ini : function createrequestobject() { var xmlrequest; try { xmlrequest = new ActiveXObject( Msxml2.XMLHTTP ); catch (error1) { try { xmlrequest = new ActiveXObject( Microsoft.XMLHTTP ); catch (error2) { if (typeof XMLHttpRequest!= 'undefined') { xmlrequest = new XMLHttpRequest(); return xmlrequest; 14.2.6 Menggunakan object XMLHttpRequest untuk berkomunikasi dengan Server Jika telah membuat instance object dari XMLHttpRequest, selanjutnya object tersebut dapat digunakan untuk membuat fungsi updatezip. Pada dasarnya, kita mengirimkan request kepada server berupa input City yang diberikan user. Sebagai resource, kita dapat mengimplementasikan servlet. <script type= text/javascript > var xmlrequest; function updatezip(cityvalue) { xmlrequest = createrequestobject(); xmlrequest.open( GET, http://ourserver/ourapplication/getzipcode?city= + cityvalue); xmlrequest.send(null); Terdapat beberapa cara untuk menampung respon dari server. Untuk menampung respon sebagai String sederhana, gunakan atribut responsetext. Untuk menampungnya sebagai dokumen XML, gunakan atribut responsexml. Namun, value dari atribut atribut tersebut tidak dapat diakses secara langsung. Ingat kembali akronim dari AJAX. A berarti Asynchronous yang berarti seluruh method yang membuat request pada server tidak mengandung respon dari server AJAX 5

langsung setelah eksekusi method. Respon dari server akan tiba dalam waktu yang tidak dapat ditentukan. 14.2.7 Fungsi Callback Untuk mengatasi situasi semacam ini, XMLHttpRequest mengijinkan kita untuk menggunakan fungsi JavaScript sebagai Callback handler : callback adalah fungsi yang akan digunakan oleh XMLHttpRequest setelah menerima respon dari server. Dibawah ini adalah fungsi JavaScript yang digunakan untuk meregistrasi sebuah fungsi dengan nama processserverdata sebagai fungsi callback : <script type= text/javascript > var xmlrequest; function updatezip(cityvalue) { xmlrequest = createrequestobject(); xmlrequest.onreadystatechange=processserverdata; xmlrequest.open( GET, http://ourserver/ourapplication/getzipcode?city= + cityvalue); xmlrequest.send(null); Pada saat menuliskan kode fungsi callback, perhatikan bahwa event onreadystatechange muncul tiap kali terdapat perubahan keadaan pada object XMLHttpRequest. Pada contoh, kita hanya ingin menangani data setelah menerima respon, maka dibuatlah statement kondisional untuk memeriksa apakah XMLHttpRequest pada kondisi yang sesuai : function processserverdata() { if (xmlrequest.readystate == 4) { var data = xmlrequest.responsetext; document.getelementbyid( zip ).value = data; AJAX 6

Dibawah ini adalah kondisi kondisi yang mungkin terjadi : Value readystate Indikasi 0 Uninitialized. Method send() belum dipanggil. 1 Loading. Request sedang dikirim menuju server. 2 Loaded. Respon dari server telah diterima. 3 Interactive. Respon sedang diproses. 4 Completed. Respon telah diproses. Siap untuk digunakan. Hal lain yang perlu diperhatikan pada saat membuat fungsi callback adalah kemungkinan error pada server. Kode yang kita gunakan diatas akan berjalan sebagaimana fungsinya, diasumsikan jika tidak ada permasalahan dari sisi server, namun kemungkinan kesalahan selalu akan terjadi. XMLHttpRequest menyediakan cara untuk menentukan HTTP status code yang diberikan oleh server. Jika kode menyatakan dalam kondisi 200, berarti request telah berhasil diproses : function processserverdata() { if (xmlrequest.readystate == 4) { if (xmlrequest.status == 200) { var data = xmlrequest.responsetext; document.getelementbyid( zip ).value = data; document.getelementbyid( ziperror ).innerhtml = ; else { document.getelementbyid( ziperror ).innerhtml = Error in retrieving ZIP code ; AJAX 7

Potongan kode JavaScript diatas menggunakan cara yang sederhana namun sangat bermanfaat untuk menampilkan pesan pada user : diasumsikan bahwa terdapat elemen HTML (<div>) dengan id dari ziperror. Proses yang sukses dilakukan dari sisi server akan membiarkan elemen ini kosong. Sebaliknya, sebuah error pada server akan menampilkan pesan kesalahan sesuai yang ditentukan pada kode. Satu hal yang patut untuk diperhatikan, atribut innerhtml didukung oleh sebagian besar, namun tidak seluruh browser. Alternatif lain yang lebih kompatibel bagi browser adalah sebagai berikut : function processserverdata() { if (xmlrequest.readystate == 4) { var ziperrordiv = document.getelementbyid( ziperror ); if (xmlrequest.status == 200) { var data = xmlrequest.responsetext; document.getelementbyid( zip ).value = data; ziperrordiv.replacechild(document.createtextnode( ), ziperrordiv.childnodes[0]); else { ziperrordiv.replacechild(document.createtextnode( Error in retrieving ZIP code ), ziperrordiv.childnodes[0]); AJAX 8

Berikut ini adalah kode lengkap dari halaman yang telah dibuat : <html> <head> <title>registration Form</title> <script type= text/javascript > var xmlrequest; function updatezip(cityvalue) { xmlrequest = createrequestobject(); xmlrequest.onreadystatechange=processserverdata; xmlrequest.open( GET, http://ourserver/ourapplication/getzipcode?city= + cityvalue); xmlrequest.send(null); function processserverdata() { if (xmlrequest.readystate == 4) { if (xmlrequest.status == 200) { var data = xmlrequest.responsetext; document.getelementbyid( zip ).value = data; document.getelementbyid( ziperror ).innerhtml = ; else { document.getelementbyid( ziperror ).innerhtml = Error in retrieving ZIP code ; function createrequestobject() { var xmlrequest; try { xmlrequest = new ActiveXObject( Msxml2.XMLHTTP ); catch (error1) { try { xmlrequest = new ActiveXObject( Microsoft.XMLHTTP ); catch (error2) { if (typeof XMLHttpRequest!= 'undefined') { xmlrequest = new XMLHttpRequest(); return xmlrequest; </head> <body> <H1> Welcome new user! </H1> Please enter your information in the fields below <form action="/submit"> Name : <input type="text" name="name" id= name /> <br/> Address : <input type="text" name="address" id= address /> <br/> City : <select id= city name="city" onchange= updatezip(this.value) > <option>select One from List</option <option value="quezon City">Quezon City</option> </select> <br/> Zip Code : <input type="text" name="zip" id= zip size="4"/> <div id= ziperror ></div> <br/> <input type="submit" value="submit"/> </form> </body> </html> AJAX 9

Berikut ini adalah contoh implementasi dari pemanggilan resource dari sisi server oleh AJAX : public ZIPRetrievalServlet extends HttpServlet { public void doget(httpservletrequest request, HttpServletResponse response) throws ServletException, IOException { String city = request.getparameter( city ); ZIPService service = new ZIPService(); String zipcode = service.getzipforcity(city); response.setcontenttype( text/html ); PrintWriter out = response.getwriter(); out.println(zipcode); out.close(); AJAX 10