Quảng cáo trực tuyến

Quảng cáo Google

Tin Quảng Cáo Yahoo

Domain - Tên miền

Bản tin Email

Hosting

Website

Blogs & Podcast

Hướng Dẫn FPT / Upload Web

Chuyên đề
   Quản lý khách hàng
   CĐ Ajax & Web 2.0
   Office - Văn phòng
   Công nghệ mạng
   Chuyên đề RSS
   Phần mềm - Software
   Bộ sưu tập

Tin tức - Sự kiện

Diễn Đàn Mua Bán
  


... Tin chọn lọc  

Nhập nội dung cần tìm

AJAX - tương lai cho ứng dụng Web (2)

Trong bài viết trước đã giới thiệu cho bạn một cái nhìn tổng quát về AJAX, trong bài viết này sẽ tiếp tục giới thiệu về AJAX thông qua một ví dụ cụ thể: từ điển Ajax...

Các bộ từ điển bao gồm:

  • Anh-Việt (65.000 từ)
  • Việt-Anh (30.000 từ)
  • Anh-Anh (Webster's Unabridged Dictionary 182.696 từ)
  • Đồng-Nghĩa (khoảng 40.000 từ)

Tất cả đều là Unicode. Để cho ứng dụng nhẹ nhàng và nhanh như tên gọi của nó (Fast Dictionary) tôi không tích hợp bộ gõ Unicode vào trang Web, nên khi tra từ điển Việt-Anh, bạn phải dùng các bộ gõ như Unikey/Vietkey.

Khác với các cuốn từ điển online trước đây, ở cuốn từ điển AJAX này, ngay khi bạn gõ vào một từ lập tức từ này được tra trong từ điển và hiện ra nghĩa gần như đồng thời. Việc chuyển từ bộ từ điển này sang từ điển khác rất dễ dàng và đặc biệt ngay khi chuyển đổi từ bạn vừa gõ vào sẽ được tra trong từ điển mới. Xin xem một vài screenshots khi tra từ "song " với các từ điển khác nhau.

Từ điển Anh-Việt:

Từ điển Việt-Anh:

Từ điển Anh-Anh:

Từ điển Đồng Nghĩa:

Kỹ Thuật

Kỹ thuật ở đây thật giản dị như chính AJAX! Khi bạn gõ từ cần tra vào sự kiện "onkeyup" được "bắt" và kích họat hàm javascript "searchWord". Đây là một hàm AJAX, gửi từ cần tra tới máy chủ và nhận kết quả rồi gán vào DIV "searchResult".

<input id="searchInput" size=65 type="text"
onkeyup=searchWord(this.value)></input>

function searchWord(key) {
var url = "servlet/EnViDictRender?k=" + key;
if (window.XMLHttpRequest) { // Non-IE browsers
req = new XMLHttpRequest();
req.onreadystatechange = processStateChange;
try {
req.open("GET", url, true);
} catch (e) {
alert(e);
}
req.send(null);
}
else if (window.ActiveXObject) { // IE
req = new ActiveXObject("Microsoft.XMLHTTP");
if (req) {
req.onreadystatechange = processStateChange;
req.open("GET", url, true);
req.send();
}
}
}

Việc gửi request và hiển thị kết quả bằng Ajax như thế nào xin các bạn tham khảo thêm ở bài viết AJAX - tương lai của ứng dụng Web (phần 1)!

Phía Server-side, khi nhận được request truy vấn bạn chỉ cần lục trong CSDL từ điển với câu SQL có dạng:

SELECT TOP 10 * FROM dictionary WHERE WORD LIKE &apos;key%&apos;

Câu SQL sẽ lấy 10 từ giống với từ cần tra nhất trong từ điển. Việc của bạn là format kết quả thành dạng HTML và trả lại cho client.


Khó Khăn và Kinh Nghiệm

Kinh nghiệm thú vị nhất khi làm cuốn từ điển này là tìm từ trong từ điển "Việt-Anh". Điều may mắn duy nhất đó là cuốn từ điển này dùng 100% Unicode nên có vẻ như là khi gửi request đi Java sẽ đọc ngay được chuỗi tiếng Việt (máy chủ của tôi dùng Java 1.5 nên hỗ trợ UTF-8 rất tốt). Nhưng mọi chuyện không đơn giản như vậy, khi xử lý chuỗi request kiểu thế này:

String key = (String)request.getParameter("k");

thì từ "Việt Nam" biến thành "Vi?t Nam". Thì ra các request đều được biến thành dạng "ISO-8859-1" chuẩn và để có được tiếng Việt Unicode ta phải convert lại:

String key = new String(request.getParameter("k").
getBytes("ISO8859_1"), "UTF8");

Một vấn đề nữa nảy sinh là khi dùng Firefox/Opera thì rất tốt, nhưng khi chuyển sang Internet Explorer thì hiện tượng "Vi?t Nam" lại xuất hiện.

Hóa ra nếu dùng chuỗi Unicode với "GET" trong IE thì không được , bạn cần dùng "POST". Tóm lại khi truy vấn từ điến "Việt-Anh" thì hàm "searchWord()" sẽ có dạng:


function searchWordVE(key) {
var url = "servlet/ViEnDictRender";
var pars = "k=" + key;
if (window.XMLHttpRequest) { // Non-IE browsers
req = new XMLHttpRequest();
req.onreadystatechange = processStateChange;
try {
req.open("POST", url);
req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
req.send(pars);
} catch (e) {
alert(e);
}
} else if (window.ActiveXObject) { // IE
req = new ActiveXObject("Microsoft.XMLHTTP");
if (req) {
req.onreadystatechange = processStateChange;
req.open("POST", url);
req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
req.send(pars);
}
}
}

Hy vọng các kinh nghiệm này sẽ giúp chút ít cho các bạn trong các dự án khác liên quan đến tiếng Việt Unicode.

Kết Quả

Chúng ta có một cuốn từ điển "FAST and COOL!", bạn có thể dùng ở đây

http://myjavaserver.com/~fastdict/

Tôi nghĩ ứng dụng này bọc lộ sự đơn giản và "vẻ đẹp" của AJAX. Không phải cái gì tốt cũng phức tạp phải không các bạn?

(theo JavaVietnam Organization)


Xem: 3667 lần ( Tác giả Tong hop )

Tìm tin liên quan "AJAX - tuong lai cho ung dung Web (2)"

Facebook | Twiiter
Trang chủ
Lưu trang này
In bài này
Quay lại
CyVee Bookmark

Họ & Tên
Email
Điện Thoại
Ghi chú
Mã xác nhận
 Tin cùng Chuyên đề RSS    


Website >> Chuyên đề RSS
 
  Zoom: 800 x 600 - 1024 x 768

Muoihv: 84 908 134 772 - Email: info@1yt.net Copyright 2002 - 2008 by iCMS
Thông tin liên quan ( lỗi website, liên hệ, giải đáp, hỗ trợ kỹ thuật,... ) vui lòng gửi về contact@giaiphaptructuyen.net

Ads Banner