Hiển thị các bài đăng có nhãn Ajax. Hiển thị tất cả bài đăng
Hiển thị các bài đăng có nhãn Ajax. Hiển thị tất cả bài đăng

Thứ Hai, 25 tháng 10, 2010

AJAX là gì làm quen với Ajax

VnTim™<> AJAX là gì?
AJAX, viết tắt của cụm từ "Asynchronous JavaScript And XML", là sự kết hợp của các công nghệ: CSS , DOM, XMLHttpRequest, JavaScript.

Với mô hình web truyền thống, client gửi một HTTP request lên server, server tiếp nhận request, tiến hành các tác vụ xử lý nào đó như insert, update, delete, retrive ... rồi sau đó trả lại một trang HTML hoàn toàn mới. Vấn đề của mô hình này là ở chỗ trong thời gian server tính toán, xử lý, tất cả những việc mà người dùng có thể làm là chờ và chờ. Trong trường hợp đường truyền mạng chậm thì tốt nhất là nên bỏ ra ngoài làm một tách cafe để khỏi sốt ruột.

Với AJAX, ta có thể submit một request lên server (ví dụ các thông tin trong một form chẳng hạn), server nhận request và đáp trả gần như ngay tức khắc cho client mà không cần phải nạp lại trang. Có thể xem việc submit dữ liệu từ client lên server như là một tác vụ “chạy nền” bên dưới mà người dùng không nhận thấy. Điều này làm cho các ứng dụng web ngày càng gần với các ứng dụng desktop hơn về độ thân thiện cũng như tốc độ và sự tiện dụng.

AJAX là gì làm quen với AjaxHình 1: Mô hình ứng dụng web truyền thống (bên trái) so với mô hình ứng dụng AJAX (bên phải)
AJAX đã làm điều đó như thế nào?
AJAX sử dụng AJAX engine – một dịch vụ web được viết bằng java script, nằm ở giữa client và server, thường được giấu trong một frame ẩn. Thay vì phải nạp lại cả trang, vào thời điểm khởi động session, trình duyệt nạp AJAX engine. Engine này có nhiệm vụ đảm trách việc trả lại kết xuất cho người dùng thấy và đóng vai trò thông tin liên lạc với server. AJAX engine cho phép người dùng tương tác với ứng dụng bất đồng bộ – độc lập trong việc liên lạc với server. Do đó, người dùng không bao giờ phải chờ đợi server xử lý một tác vụ nào đó.

Mọi tác động của người dùng thông thường đều sinh ra một HTTP request nắm giữ form của một lời gọi JavaScript đến AJAX engine. Bất cứ một đáp trả nào đến người dùng đều không đòi hỏi một sự kế nối nào ngược lại với server – ví dụ như việc validation dữ liệu, hiệu chỉnh dữ liệu bên trong bộ nhớ... Nếu như engine cần một cái gì đó ở server để có thể đáp trả cho client – nếu như trong trường nó submit dữ liệu để xử lý, nạp các mã giao diện khác hay là tải về dữ liệu mới – engine tạo các yêu cầu này bất đồng bộ, thông thường sử dụng XML mà không cần thông qua một sự tương tác của người dùng với ứng dụng.

AJAX là gì làm quen với Ajax alt="" src="http://my.opera.com/dangngocgiao/homes/acticles/what_is_ajax/ajax-fig2.png" />
Hình 2: Tương tác đồng bộ (trên) so với tương tác bất đồng bộ (dưới)
Vai trò của các công nghệ khác nhau trong AJAX
JavaScript: JavaScript trong một trang được gọi khi một sự kiện nào đó phát sinh trong trang

DOM: DOM cung cấp API cho phép truy xuất và thao tác động trên các tài liệu có cấu trúc thể hiện cấu trúc của XML và HTML

CSS: CSS cho phép tách bạch việc thể hiện presentation và nội dung, có thể thay thay đổi động bằng cách dùng JavaScript

XMLHttpRequest: XMLRequest là thành phần quan trọng nhất trong AJAX, nó cho phép gửi dữ liệu bất đồng bộ lên server. Một điểm cần lưu ý là với IE, đối tượng XMLRequest được hiện thực như là một phần của ActiveXObject. Điều này là quan trọng khi ta muốn xây dựng các các ứng dụng web cross platform, với mỗi trình duyệt cụ thể thì cách thức ta khởi tạo đối tượng này cũng khác nhau. Tại sao W3C chưa approve XMLHttpRequest nhỉ? Nhưng dù sao cũng đáng mừng thì với IE 7, ta có thể khởi tạo đối tượng XMLRequest giống như với việc khởi tạo đối tượng này trong FireFox, Safari …

Ứng dụng AJAX trên Internet
Google map (http://maps.google.com), Gmail (http://gmail.com) … là các ví dụ hoành tráng nhất về việc sử dụng AJAX cho các ứng dụng web
Đặc tính của XMLHttpRequest
+ Tài liệu trả về phải là text/xml
+ Trang web hiện hành vẫn tiếp tục phát sinh các sự hiện trong khi đối tượng XMLHttpRequest chạy nền bên dưới
+ Chỉ có phép một số lượng giới hạn request được gửi lên
+ Cho phép ta chỉ định một hàm xử lý ứng với trạng thái thay đổi, hàm xử lý được kích hoạt khi request ở các trạng thái: khởi tạo, bắt đầu, đang trả về, hoàn tất

Các hàm, thuộc tính thông dụng của XMLHttpRequest
onreadystatechange: hàm nắm giữ xử lý sự kiện, được kích hoạt mỗi khi trang thái thay đổi, ta phải tự hiện thực các hàm xử lý sự kiện cho mình
readyState: trạng thái hiện hành của request, có giá trị là 0 - chưa được khởi tạo, 1 - đang nạp, 2 - đã nạp xong, 3 – đang trong tiến trình đáp trả, 4 – hoàn tất
status: Trạng thái của HTTP trả lại từ server – 200 = OK
responseText: Dữ liệu trả về từ server dưới dạng chuỗi
responseXML: Dữ liệu trả về từ server dưới dạng tài liệu XML
statusText: Trạng thái text trả về từ server

Xây dựng một demo nho nhỏ với AJAX
Để kết thúc bài viết này, ta sẽ xây dựng ứng dụng demo “Tìm kiếm thông tin sách”. Giả sử ta có một cơ sở dữ liệu chứa thông tin về sách, với đơn giản chỉ có 2 trường là NAME và AUTHOR. Ứng dụng của chúng ta đơn giản chỉ với một màn hình cho phép người dùng nhập tiêu chí tìm kiếm theo tên sách và tên tác giả. Khi người dùng nhập truy vấn, ứng dụng trả về ngay kết quả khớp với truy vấn đã nhập vào mà không cần phải vẽ lại trang mới. Để đơn giản, dễ hiểu và có thể chạy ứng dụng này một cách dễ dàng cho những người mới, ta hard-code cơ sở dữ liệu ngay trong code Java.
AJAX là gì làm quen với Ajax
Hình 3: Ứng dụng demo
Đáng lẽ phải viết vài dòng giải thích source code chương trình ở đây cho phải đạo nhưng vì … buồn ngủ rồi nên để khi nào rảnh bổ sung sau. Với lại source được viết đơn giản đến mức tối đa và rõ ràng, nên chắc cũng chẳng khó hiểu, hehehe. Có thể download file war hoặc source code về tham khảo theo các link dưới.
File war: http://my.opera.com/dangngocgiao/homes/acticles/what_is_ajax/BookSearchDemo.war
File source: http://my.opera.com/dangngocgiao/homes/acticles/what_is_ajax/BookSearchDemo_SRC.zip

Tài liệu tham khảo
Manning Ajax In Action – Dave Crane, Eric Pascarello and Darren James
Foundations of AJAX – Ryan Asleson and Nathaniel T. Schutta

Tác giả: Đặng Ngọc Giao
Mobile: 0988848223
Email: giaodn@gmail.com, giao_dn@yahoo.com

AJAX là gì và tổng quan về Ajax

VnTim™<> Hiện nay kỷ thuật Ajax được ứng dụng rất nhiều trên các trang web nhằm tăng tính thân thiện và tiện lợi hơn cho trang web. Khái niệm này đang dần quen thuộc với những người lập trình web. Nếu bạn quan tâm tới kỷ thuật này và đang có ý định học thì nên đọc bài viết này để xem bạn có quyết định sáng suốt không nhé .
AJAX là thuật ngữ viết tắt của Asynchronous Javascript and XML ( JS và XML không đồng bộ). AJAX có thể đọc là "trao quyền cho javascript" và thông qua js để cung cấp một công nghệ phía client-script để gọi ngầm một lệnh background để phía server thực hiện và nhận thông tin trả về, update thông tin của trang nhanh mà không cần phải load lại cả trang, rất mất thời gian load lại những cái không cần update.

Ví dụ: Để kiểm tra nickname đã tồn tại trong cơ sở dữ liệu hay chưa thì khi thành viên vừa nhập xong nick name, thông tin trên form lập tức javascript nắm thông tin rồi thực hiện gọi một hàm bằng PHP bên phía server để kiểm tra thông tin sau đó trả kết quả html về cho javascript xuất ra cho người dùng biết tính hợp lệ của nickname, lúc đó ngươid ùng có thể thay đổi ngay chớ không cần đợi submit rồi kiểm tra và nhập lại như dùng PHP truyền thống.

AJAX là gì và tổng quan về Ajax

Sơ đồ miêu tả hoạt động của Ajax

Cũng như bất kỳ công nghệ khác, AJAX có thể bị sử dụng quá nhiều trong một website, vì họ chỉ thấy những ưu điểm mà AJAX mang lại chớ không quan tâm đến những khuyết điểm của AJAX, để tranh tình trang trên, có thể liệt kê một số đặc điểm của AJAX như sau:

- Ưu điểm:

    * Nó giúp việc thiết kế web đa dạng hơn và tăng tính tương tác của website với người dùng
    * Nó sử dụng các công nghệ đã có sẵn nên dễ học và sử dụng
    * Nhờ tính phổ biến của nó, đã khuyến khích việc phát triển các khuôn mẫu mà sẽ giúp lập trình viên tránh khỏi các vết xe đổ trước.
    * Được hỗ trợ trong các trình duyệt phổ biến hiện nay

- Hạn chế

    * Bạn không thể bookmark nó vào favourite trên trinh duyệt hay gởi link đến cho bạn bè, vì tất cả quá trình nó thực hiện ngầm và không hiển thị trên address
    * Không thể hiện thị nội dung trên các trang tìm kiếm vì các trang tìm kiếm hiện nay vẫn chưa hỗ trợ tìm vì rất khó tìm và gần như không thể tìm đc.
    * Không thể sử dụng nút back vì back cũng là chính nó
    * Với một số trình duyệt, do nhu cầu bảo mật, sẽ tắt chức năng thực hiện javascript nên ajax không thể chạy, hay trong một vài host, không hỗ trợ vào sâu cấu hình server nên hay bị lỗi "Access denied"

Nhưng với những điểm hạn chế nói trên thì AJAX vẫn đang được các lập trình viên sử dụng rộng rãi và đang nghiên cứu để cải thiện nó, ví dụ như vừa update thông tin trên web, vừa thay đổi trên thanh address để có thể sử đung một số chức năng liên quan tới địa chỉ tuyệt đối này.
Nếu bạn muốn tìm hiểu chi tiết hơn thì có thể xem trên Bách khoa toàn thư mở Wikipedia tại đây
Sau đây là một số địa chỉ tham khảo về ajax:

Ajax Jquery và JavaScript

VnTim™<>Đôi lúc khi mới đi đến ranh giới của lập trình web 2.0 bạn đang ngờ ngợ giữa các chức năng của nó, cũng như bạn biết rằng web 2.0 thì nên áp dụng ajax, tìm hiểu trên mạng hoặc trong tài liệu thì bạn hiểu sơ sơ nó là cách gửi dữ liệu không đồng bộ ….
Nhưng để đi vào vấn đề khi đến với ajax bạn thực sự bối rối quá nhiều, không biết cơ chế hoạt động, không nắm rõ nó, và một phần do vồn tiếng anh yếu mà không dám đụng chạm đến những cuốn sách JS tiếng anh…

Một thời gian nào đó, có bạn đã pm để hỏi tôi “Anh ơi ! sao anh không soạn tut dạy Ajax, em toàn thấy dạy Jquery không hà”. Khi đọc được vấn đề này, tôi thực sự bỡ ngỡ, người ta có thể hỏi mình dạy Ajax trong khi người ta biết Jquery. Có buồn cười không khi hỏi “Anh ơi em biết sơ về Jquery nhưng em mù JS anh có thể soạn tut JS cho em không ?”, khi đó nó lại là vấn đề khác.
Để trả lời cho câu hỏi này, bài viết hôm nay sẽ minh họa rõ ràng về mối ràng buộc và quan hệ giữa Ajax, Jquery và JavaScript.
ĐỊNH NGHĨA
Javascript : là một ngôn ngữ xử lý sự kiện thông thường cho website, thông thường được dùng để sử lý các sự kiện. Ngôn ngữ cũng theo cấu trúc chính của C, có thể nói JS chỉ khác PHP ở ngôn ngữ, còn hướng lập trình thì hầu như là giống nhau.
JQuery : Gần như là một mã nguồn mở sử dụng JS, Jquery tổng hợp các vấn đề cần phải làm trong JS thành một thư viện, và sau đó nó cho phép phát biểu theo cách gọi riêng của nó.
Ajax : Có thể nói, Ajax chỉ là một phần nhỏ trong JSm khi thực hiện theo JS thuần Ajax được thể hiện tương quan theo JS thuần, khi thể hiện theo Jquery, cách sử dụng khác nhau nhưng mối tương quan của nó với JS vẫn không đổi, bởi vì bản thân nó vẫn chỉ chạy trên JS.
PHÂN BIỆT
- Với cách để có thể phân biệt 3 dạng này, ta sẽ đi đơn giản từ dưới lên trên.
Ajax : Ajax chỉ là một hàm nhỏ nếu bạn sử dụng Jquery và là một sự kết hợp nhiều thành phần nếu bạn sử dụng JS thuần.
Ajax với Jquery

$(document).ready(function(){
   $.ajax({
      //Tại đây ta có thể cho các giá trị vào function Ajax, lúc này Ajax là một function.
      url: 'leech_link.php',
      type: 'POST',
      dataType: 'html',
      data: 'name='+varlue1+'&tuoi='+value2,
      beforeSend(function(){
           $('#wait').html('<img src='load.gif' title='' />);
      }),
      success(function(html){
           $('#show').html(html);
       })
   });
});

- Chỉ với vài dòng như thế chúng ta đã hoàn thành một ajax khá đơn giản, nhưng bản chất bên trong của nó khi tuơng tác với JS thì như thế nào ? hay nói chính xác hơn, Ajax hoạt động trên JS thế nào, chúng ta cùng tham khảo code sau :
Ajax với JS thuần

// Ajax function
function XMLHttpClient() {
     var xmlhttp;
     try {
         // Mozilla / Safari / IE7
         xmlhttp = new XMLHttpRequest();
     } catch (e) {
          // IE
          var XMLHTTP_IDS = new Array('MSXML2.XMLHTTP.5.0',
                                    'MSXML2.XMLHTTP.4.0',
                                    'MSXML2.XMLHTTP.3.0',
                                    'MSXML2.XMLHTTP',
                                    'Microsoft.XMLHTTP' );
         var success = false;
         for (var i=0;i < XMLHTTP_IDS.length && !success; i++) {
         try {
                  xmlhttp = new ActiveXObject(XMLHTTP_IDS[i]);
                     success = true;
               } catch (e) {}
         }
         if (!success) {
             throw new Error('Unable to create XMLHttpRequest.');
         }
    }
    return xmlhttp;
}

 function SetName(name)
 {
     var req =XMLHttpClient() ;
     req.open('GET', 'setname.php?name=' + name, false);

     req.send(null);
  var newName =req.responseText;
     alert(newName);
 }

- Như vậy chúng ta đã hiểu rõ hơn phần nào Ajax, chúng ta cùng đi qua vấn đề tiếp theo là Jquery
Jquery: Như đã giải thích ở trên, bản thân Jquery cũng chỉ là một thư viện tổng họp hoạt động trên nền tảng JS, để chứng minh điều này, chúng ta đi vào một ví dụ nho nhỏ, tôi muốn lấy giá trị của một ID nào đó và cho hiển thị thông báo ra màn hình.
Sử dụng JS thuần

//Nếu bạn muốn lấy giá trị của nó, bạn phải sử dụng chuỗi hàm sau :
     var myContent = document.getElementById('content');
     alert(myContent.value);


và sử dụng Jquery

alert($('#content').val());

Chỉ đơn giản là vậy mà thôi. Như vậy cái bạn cần hiểu, từ một phuơng thức nào đó, Jquery có thể thực thi các lệnh JS thông qua cách viết của riêng nó, nhưng thực sự nền tảng nó vẫn chỉ là JS.
JavaScript : Như vậy tới đây, bài viết là khá tạm ổn cho các phần giải thích, về JS tôi không có nhiều ý kiến để phân biệt nó, bởi vì nó là nền tảng cho sự phát triển của các thư viện khác.
KẾT LUẬN
Như vậy giờ chắc bạn đã mường tượng được trong đầu, cái nào nằm đâu ? và vị trí nó như thế nào rồi đúng không ?. Cũng như kho kiến thức, kiến thức là vô hạn, một thuật toán sẽ có nhiều cách giải, một bài toán khó không phải có kết quả là quan trọng, mà phải làm sao cho nó đỡ tốn công sức nhất. Cũng như học PHP, bạn phải học theo hướng đối tượng để tránh đi tối đa những khai báo trùng lặp, để tránh tất cả những code không cần thiết, như Jquery vậy, người ta gộp chung nó và đặt cho nó một cách khác gọn gàng hơn ^^.
VnTim™ Nguồn : izwebz.com