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
jquery ajax phuong thuc trang thai
Tiếp theo loạt bài về Jquery Ajax nào ^_^ !  Hôm qua mình có giới thiệu sơ qua một chút về phương thức post trong jquery ajax. Hôm nay mình xin tiếp tục với một vài các phương thức trạng thái ajax. Các phương thức này bao gồm có: ajaxComplete(), ajaxError(), ajaxSend(), ajaxStart(), ajaxStop(), ajaxSuccess().
Chúng ta sẽ cùng tìm hiểu một chút về chức năng của các phương thức này.
ajaxStart(): chỉ ra hàm được thực thi khi ajax request được bắt đầu.
ajaxStop(): chỉ ra hàm được thực thi khi tất cả các ajax request đã hoàn thành.
ajaxComplete(): chỉ ra hàm được thực thi khi ajax request hoàn thành.
ajaxError(): chỉ ra hàm được thực thi khi ajax request có lỗi.
ajaxSend(): chỉ ra hàm được thực thi trước khi ajax request được gửi đi.
ajaxSuccess(): chỉ ra hàm được thực thi khi ajax request hoàn thành thành công.
Bây giờ mình sẽ làm một ví dụ để tổng hợp tất cả những phương thức trên.
Giả sử chúng ta có một body gồm các phần tử sau:

<div id="main"></div>
<button id="click">Go To Ajax</button>
<div id="start" style="display:none"><strong style="color:#0055A8">Loading... please wait!</strong></div>
<div id="stop" style="display:none"><strong style="color:#A80007">Stopped!</strong></div>
<div id="success" style="display:none"><strong style="color:#00A803">Success!!!</strong></div>
<div id="error" style="display:none"><strong style="color:#A80010">Error!!!</strong></div>
<div id="complete" style="display:none"><strong  style="color:#9D00A8">Completed ajax!</strong></div>
<div id="send" style="display:none"><strong style="color:#A86400">Prepare to send!!!</strong></div>
Một div main để chứa thông tin load được. Một button để kích hoạt event. Và các div để hiện thị trạng thái, mình đã đặt tên theo nội dung trạng thái mà chúng sẽ trải qua.
Còn đây là phần script mà chúng ta sẽ sử dụng:
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.0/jquery.min.js"></script>
    <script language="javascript" type="text/javascript">
        $(document).ready(function () {
            
            $("#main").ajaxStart(function () {
                $("#start").css("display", "block");
            });
            $("#main").ajaxComplete(function () {
                
                $("#complete").css("display", "block");
            });
            $("#main").ajaxSend(function () {
                $("#send").css("display", "block");
            });
            $("#main").ajaxStop(function () {
                $("#stop").css("display", "block");
            });
            $("#main").ajaxSuccess(function () {
                $("#success").css("display", "block");
            });
            
            $("#main").ajaxError(function () {
                $("#error").css("display", "block");
            });
            $("#click").click(function () {
                $("#main").load("content.txt");
            });

        });
    </script>
Đây là đoạn script để chúng ta hiển thị các div trên. Khi chúng ta bắt đầu chạy thì các trạng thái của ajax sẽ lần lượt được hiện ra, để thấy rõ quá trình này thì bạn nên để file content.txt có kích thước lớn một chút để làm chậm lại quá trình đó để chúng ta có thể nhìn thấy rõ hơn. Đây chỉ là một ví dụ mang tính chất demo cho các bạn hiểu. Hi vọng là các bạn có thể hiểu thêm một chút về các phương thức này trong ajax. Chúc các bạn thành công!
phuong thuc post jquery ajax
Mình xin tiếp tục với series bài về jquery đơn giản đang còn dang dở. Những bài viết trước mình đã nói qua một chút về một vài phương thức ajax trong jquery ajaxphương thức get trong jquery ajax. Bài viết này mình sẽ nói thêm về một phương thức khác cũng có các chức năng gần giống với 2 phương thức trên đó là phương thức post trong jquery ajax
Phương thức post() là phương thức dùng để load dữ liệu từ server thông qua Http Post request.
Cú pháp: $(selector).post(url,data,success(response,status,xhr),dataType)
 url: địa chỉ request được gửi đến.(bắt buộc)
data: dữ liệu được gửi kèm với request được gửi đến server.(cái này là tùy chọn)
success: hàm được thực thi khi mà request được gửi đi thành công( tùy chọn)

  • response: chứa kết quả trả về từ request được gửi đi.
  • status: chỉ ra trạng thái của request: success, error, notmodified, timeout...
  • xhr: chứa đối tượng XmlHttpRequest.
dataType: Tùy chọn. Nó chỉ ra loại dữ liệu được trả về từ server. Mặc định thì jquery sẽ tự xác định. Các loại dữ liệu có thể là: xml, html, text, script, json, jsonp.
Tiếp theo là một ví dụ đơn giản về cách thức hoạt động của phương thức post().
Giả sử chúng ta có 1 button trong body html.
<button id="btnGo">Go</button>
Và một đoạn jquery script như sau:
 $(document).ready(function () {
            $("#btnGo").click(function () {
                var jqxhr = $.post("content.txt", function () {
                    alert("Send request success");
                })
                    .success(function () { alert("Found page success"); })
                    .error(function () { alert("Not found page or have some errors with network!"); })
                    .complete(function () { alert("Complete request"); });
                    .timeout(function () { alert("Request timeout"); });
                jqxhr.complete(function () { alert("Get response complete"); });
            });
        });
 Đoạn code trên là để tìm hiểu quy trình và vòng đời của phương thức post. Bạn request đến 1 file content thì sẽ được thông báo về việc gửi request thành công, sau đó là các phương thức tương ứng với từng giai đoạn và bạn sẽ được thông báo kết quả là nó có xảy ra điều đó hay không.
Phương thức post thường được sử dụng trong các form thu thập dữ liệu. Nó cũng có chức năng như load data từ server về như get và ajax. Nhưng thường thì get() và post() sẽ ít được dùng hơn là ajax() vì phương thức ajax() có thể dùng để thay thế 2 phương thức trên mà ajax() lại có tính linh hoạt và mềm dẻo hơn.

ps/: không có nhiều time nên mình chỉ làm 1 ví dụ đơn giản, mong các bạn thông cảm >.<

jquery ajax phuong thuc get
Bài trước mình đã giới thiệu với các bạn về jquery ajax phương thức post(). Bài viết này mình xin giới thiệu một phương thức khác cũng dùng để load dữ liệu đó là get(). Các bạn chú ý là chúng ta có thể dùng phương thức ajax() để thay thế được cho phương thức get().
$.get(): Get là phương thức trong jquery ajax giúp bạn lấy về dữ liệu từ server thông qua Http Get.
Cú pháp jQuery.get( url [, data] [, success(data, textStatus, jqXHR)] [, dataType] )
url: đây là tham số bắt buộc. Nó chỉ ra địa chỉ url mà request sẽ được gửi đến.
data: Tùy chọn. Nó chỉ ra dữ liệu được gửi kèm với request tới server.
success: Tùy chọn. Nó chỉ ra hàm được thực thi nếu request được gửi đi thành công. Các tham số:

  • data: chứa dữ liệu được trả về từ request sau khi gửi thành công.
  • textStatus: chỉ ra tình trạng của request: success, notmodified, error, timeout, parseerror.
  • jqXHR: chứa đối tượng XmlHttpRequest.
dataType: Tùy chọn. Nó chỉ ra loại dữ liệu được trả về từ server. Mặc định thì jquery sẽ tự xác định. Các loại dữ liệu có thể là: xml, html, text, script, json, jsonp.
Bây giờ là một ví dụ đơn giản cho phương thức get() trong jquery ajax. Giả sử mình có 1 file sitemap như thế này:

<?xml version="1.0" encoding="utf-8"?>
 <sites>
   <page id="0">
     <title>Webzoomz</title>

  <url>http://www.webzoomz.info/</url>

     <desc>Tự học thiết kế web</desc>
   </page>
   <page id="1">
     <title>Contact</title>

<url>http://www.webzoomz.info/p/contact.html</url>

     <desc>Liên hệ</desc>
   </page>
   <page id="2">
     <title>Dịch vụ</title>

<url>http://www.webzoomz.info/p/dich-vu.html</url>

     <desc>Dịch vụ liên quan đến thiết kế web</desc>
   </page>
   <page id="3">
     <title>Site map</title>
     <url>http://www.webzoomz.info/p/sitemap.html</url>
     <desc>Site map webzoomz</desc>
   </page>
   <page id="4">
     <title>Help</title>
     <url>http://www.webzoomz.info/p/help.html</url>
     <desc>Hỏi đáp kiến thức thiết kế và lập trình web</desc>
   </page>

 </sites>
 Sau đó mình có một đoạn mã html trong body như sau:

<button id="btnSitemap">Read sitemap menu</button>

<div id="page-wrap"></div>
trong body sẽ có 2 phần: 1 button để get thông tin từ file xml, còn 1 div để hiển thị thông tin từ file xml dưới dạng các link. Để get thông và hiển thị nó thì chúng ta cần đoạn code jquery ajax sau:
$(document).ready(function () {
             $("#btnSitemap").click(function () {
                 $("#page-wrap").empty();
                 $.get("sites.xml", function (xml) {
                     $(xml).find('page').each(function () {
                         var id = $(this).attr('id');
                         var title = $(this).find('title').text();
                         var url = $(this).find('url').text();
                         var desc = $(this).find('desc').text();
                         $('<div class="items" id="link_' + id + '"></div>').html('<a href="' + url + '" title="' + desc + '">' + title + '</a>').appendTo('#page-wrap');
                     });
                 });
             });
         });
Mình giải thích qua 1 chút về đoạn code trên. Đầu tiên nếu người dùng kích và button để get sitemap thì chúng ta sẽ xóa hết các phần tử con trong div pagewrap đi để tránh bị hiện thì lặp thành nhiều lần. Sau đó ta dùng phương thức get() để lấy dữ liệu từ file xml. Tiếp theo chúng ta sẽ có hàm phân tách lấy dữ liệu sau khi đã get file thành công(trạng thái success).  Bước cuối mình lặp qua chuỗi kết quả rồi đưa nó vào div. Đây là style cho div:
<style type="text/css">
    .items a,.items a:active,.items a:link,.items a:visited{

   font-size:1.2em;

color:#9900FF;
text-decoration:underline;
}
.items a:hover{
text-decoration:none;
}
.desc{
font-size:0.8em;
padding-left:10px;
}
</style>
Sau khi bạn chạy file và kích vào button thì nó sẽ hiển thị nội dung của file sitemap.
jquery ajax phuong thuc get
Chúc các bạn thành công!

jquery ajax phuong thuc ajax
Đã lâu lắm rồi mới có thời gian viết bài cho blog@@. Mình xin tiếp tục với series bài về jquery đang dang dở. Bài viết trước mình có giới thiệu cho các bạn về Jquery Ajax là gì. Để hiểu được hết Jquery Ajax thì cần phải có thời gian và sự thực hành chăm chỉ, nên mình quyết định sẽ tách các phương thức trong Jquery Ajax thành một bài nhỏ cho các bạn dễ nhớ và tập thực hành dễ hơn. Bài hôm nay mình sẽ giới thiệu phương thức Ajax().
Phương thức Ajax() dùng để thực thi một Ajax request. Đây là phương thức được sử dụng khá nhiều trong Jquery Ajax và nó có thể được dùng để thay thế một số phương thức khác trong Jquery Ajax như get(),post()...
Cú pháp: $.ajax({name:value, name:value, ... })
Phương thức này nhận vào các cặp giá trị tham số gồm tên và giá trị. Dưới đây là bảng các tham số:
async: Xác định việc request có nên được thao tác bất đồng bộ hay không. Giá trị nhận vào và true hoặc false. Mặc định là true.
beforeSend(xhr): Hàm được thực thi trước khi request được gửi đi.
cache: Xác định việc trình duyệt có nên cache trang được request hay không. Nhận vào giá trị true hoặc false. Mặc định là true.
complete(xhr,status):  Hàm được thực thi khi request đã hoàn thành. Thường lại chạy sau status là success hoặc error.
contentType: Chỉ ra loại nội dùng mà được dùng để gửi tới server. Mặc định là application/x-www-form-urlencoded, ngoài ra bạn có thể xác định 1 số loại khác như application/xml, application/js, application/json,text/xml...
context: Chỉ ra giá trị cho các hàm gọi lại liên quan của Ajax.
data: dữ liệu được gửi đến server.
dataFilter(data,type): thao tác và lọc dữ liệu thô được trả về của XmlHttpRequest.
dataType: chỉ ra loại dữ liệu mong muốn được trả về từ server. Các loại dữ liệu đó có thể là text, html, xml, js...
error(xhr,status,error): Hàm được thực thi nếu request bị thất bại.
global: Xác định việc có bẫy các sự kiện toàn cục trong Ajax hay không. Nhận vào giá trị true hoặc false. Mặc định là true.
ifModified: Chỉ ra rằng request chỉ thành công nếu response trả về đã thay đổi so với request cuối cùng được gửi. Mặc định là false.
jsonp: là chuỗi viết lại hàm callback trong request jsonp.
jsonpCallback: hàm được gọi lại trong request jsonp.
mime: chỉ ra loại mime được sử dụng để thay cho XHR mime.
password: chỉ ra password để xác minh người dùng trong HTTP access authentication request.
processData: chỉ ra việc có chuyển đổi dữ liệu được gửi kèm với request thành chuỗi query string hay không. Mặc định true.
scriptCharset: chỉ ra charset cho request.
success(result,status,xhr): Hàm được thực thi nếu request thành công.
timeout: chỉ ra thời gian timeout cho request tính bằng milli giây.
traditional: chỉ ra việc có sử dụng kiểu traditional của tuần tự hóa tham số.
type: chỉ ra loại request "GET" hoặc "POST".
url: chỉ ra địa chỉ url request được gửi tới. Mặc định là trang hiện tại.
username: chỉ ra tên của người dùng trong HTTP access authentication request.
xhr: Hàm sử dụng để tạo đối tượng XmlHttpRequest.
Bên trên chỉ là một số tham số hay thấy. Trong mỗi phiên bản jquery thì đều nâng cấp thêm 1 số tham số khác nữa. Bạn có thể xem thêm tại đây: http://api.jquery.com/jQuery.ajax/.
Bây giờ chúng ta sẽ làm 1 ví dụ đơn giản để xem cách hoạt động của phương thức Ajax().
Giả sử chúng ta có 1 file content.txt như sau:
<h1>Webzoomz-tự học thiết kế web</h1>
Và một body html gồm :

       <button id="btnDisplay">Display</button>
        <div id="status"></div>
        <div id="content"></div>
div status: sẽ in ra trạng thái của ajax.
div content: sẽ in ra nội dung lúc success hoặc lúc error:
Còn đây là đoạn script jquery ajax:
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.0/jquery.min.js"></script>
    <script type="text/javascript">
        $(document).ready(function () {
            $("#btnDisplay").click(function () {$("#status").empty(); 
                $.ajax(
{
   //url của file
   url: "content.txt",
   // loại request
   type: "get",
   // Loại dữ liệu được trả về
   dataType: "text",
   error: function () {
       $("#status").prepend("Ajax Error<br/>");
       $("#content").html("404-Not found!!!");
   },
   beforeSend: function () {
       $("#status").prepend("Ajax Before<br/>");
   },
   complete: function () {
       $("#status").prepend("Ajax Complete<br/>");
   },
   success: function (result) {
       $("#status").prepend("Ajax Success<br/>");
       $("#content").html(result);
   }
});
            });
        });
    </script> 
 Và khi chạy đoạn code này thì bạn sẽ thấy nội dung của file text được hiển thị ra và các trạng thái tương ứng với ajax cũng được hiện ra.
P/s: dạo này không có nhiều thời gian nên mình chỉ làm được 1 ví dụ đơn giản thôi!
Jquery Ajax la gi
Mấy bài viết trước mình đã giới thiệu cho các bạn một số kiến thức cơ bản về Jquery  như Jquery là gì, cú pháp trong Jquery, các selectors trong Jquerycác hiệu ứng trong Jquery... Phần tiếp theo của series bài về jquery cơ bản này là Ajax. Trước khi nghiên cứu về Jquery Ajax, chúng ta hãy quay lại một chút về Ajax.

Ajax là gì nhỉ ? 
Ajax là viết tắt của Asynchronous JavaScript and XML. Ajax không còn là một ngôn ngữ mới nữa và nó đã được ứng dụng rất nhiều trên web. Tại sao nó lại được ứng dụng nhiều như vậy? Đơn giản vì nó có rất nhiều điểm mạnh. Ajax được tạo ra để tăng cường tính tương tác với người dùng và linh hoạt trong xử lí request tới server. Với ajax khi bạn request mới dữ liệu thì bạn sẽ không cần phải reload lại trang mà chỉ có module dữ liệu cần request mới reload. Như vậy bạn sẽ giảm tải được rất nhiều cho server. Nhưng bên cạnh những điểm mạnh như thế vẫn còn những điểm yếu của Ajax mà chúng ta cần lưu ý qua. Bạn không thể bookmark, chia sẻ link trên các mạng xã hội vì nó vẫn chỉ là link trên trên address bar và nó sẽ thay đổi khi reload dữ liệu mới. Bạn cũng không thể dùng nút back cho nó được và nếu bạn không bật enable javascript thì nó sẽ không thể hoạt động. Ngoài ra còn một điểm yếu lớn nhất của Ajax đó là google khó hoặc không thể index, hiển thị được được nội dung trong ajax module đó.
Jquery Ajax là gì?
Jquery Ajax là một phần quan trọng khác của thư viện Jquery bên cạnh các phần khác như HTML, CSS, ... Để tìm hiểu những lợi điểm của Jquery Ajax chúng ta hãy xem Jquery Ajax khác Javascript Ajax thuần ở điểm nào. Để sử dụng Ajax thuần Javascript các bạn thường phải khai báo đối tượng XmlHttpRequest mà đối tượng này ở các trình duyệt và các phiên bản khác nhau thì lại phải khai báo khác nhau. Điều này rất phiền phức và tốn thời gian. Và để xử lí một event hay viết một function để làm việc gì bạn thường phải code khá nhiều, mà code nhiều điều hiển nhiên dễ xảy ra là lỗi ở đâu đó. Nhưng với Jquery Ajax thì khác, Jquery hỗ trợ một loạt các phương thức viết sẵn để hỗ trợ cho việc xử lí request và dữ liệu và đương nhiên là bạn sẽ code ít hơn và gặp ít lỗi hơn. Ngoài ra với Jquery Ajax thì bạn không còn phải lo về vấn đề tương thích trình duyệt nữa. Với các tính năng xử lý dữ liệu và request cực kì linh hoạt và mạnh mẽ việc thiết kế và lập trình web sẽ trở nên đơn giản hơn rất nhiều.
Đó là một chút giới thiệu về Jquery Ajax. Hi vọng mọi người sẽ hiểu thêm một chút về nó.
p/s: Tuần này hơi bận rộn và có chút lười biếng nên chẳng viết được gì hết Jquery Ajax la gi
module thong tin thoi tiet ajax
Trên các website hiện nay tích hợp rất nhiều những module ứng dụng nhỏ như giá vàng, thời tiết, thị trường chứng khoán... Hôm nay mình sẽ giới thiệu cho mọi người tạo một module thông tin thời tiết lấy thông tin từ trang vnexpress.net.

Để tạo được module này các bạn cần có các thư viện sau AjaxRequest.js,File Ảnh(mình sẽ để trong file source cuối bài). Đầu tiên chúng ta sẽ tạo file script.js

        function getWeather(sCity) {
            AjaxRequest.get(
    {
        "url": "Services/AjaxProxy.asp?sUrl=http://vnexpress.net/ListFile/Weather/" + sCity + ".xml"
        , 'onLoading': function () { }
        , 'onSuccess': function (req) {
            if (navigator.appVersion.indexOf("MSIE") != -1) {
                var doc = new ActiveXObject("MSXML2.DOMDocument");
                doc.loadXML(req.responseText);
            } else {
                var doc = req.responseXML;
            }
            var Item = doc.getElementsByTagName('Item');
            var AdImg = "", AdImg1 = "", AdImg2 = "", Weather = "", strWrite = "";
            AdImg = getNodeValue(doc.getElementsByTagName('Item').item(0).getElementsByTagName('AdImg'));
            AdImg1 = getNodeValue(doc.getElementsByTagName('Item').item(0).getElementsByTagName('AdImg1'));
            AdImg2 = getNodeValue(doc.getElementsByTagName('Item').item(0).getElementsByTagName('AdImg2'));
            Weather = getNodeValue(doc.getElementsByTagName('Item').item(0).getElementsByTagName('Weather'));

            strWrite += "<img src='Images/Weather/" + AdImg + "' border='0' width='36' height='35' />&nbsp;";
            strWrite += "<img src='Images/Weather/" + AdImg1 + "' border='0' width='19' height='28' />";
            strWrite += "<img src='Images/Weather/" + AdImg2 + "' border='0' width='19' height='28' />";
            strWrite += "<img src='Images/Weather/c.gif' width='35' height='28' /><br />";
            strWrite += Weather;
            gmobj("divWeather").innerHTML = strWrite;
        }
        , 'onError': function (req) {
        }
    });
}

Tiếp theo trong file chúng ta cần hiển thị chúng ta thêm đoạn script này vào:

window.onload = function() {
    getWeather("Hanoi");
}
Còn đây là code của selectbox các tỉnh thành phố.
<select name="cboListCity" style="width:180px;" onchange="javascript:getWeather(this.value);">
    <option value="Haiphong">Hải Phòng</option>
    <option value="Hanoi" selected="selected">Hà Nội</option>
    <option value="Vinh">Vinh</option>
    <option value="Danang">Đà Nẵng</option>
    <option value="Nhatrang">Nha Trang</option>
    <option value="Pleicu">Pleiku</option>
    <option value="HCM">Tp HCM</option>
    <option value="Viettri">Việt Trì</option>
</select>
 Cuối cùng là divWeather để hiển thị bảng dự báo thời tiết:
<div id="divWeather"></div>
 Bước cuối cùng là chạy thử ứng dụng.
module thong tin thoi tiet ajax
Đây là code của module: Module thời tiết bằng ajax
P/s: cách này hay bị lỗi services.
Bạn có thể tham khảo thêm cách làm khác tại đây
cai dat ajax control toolkitAjax Control Toolkit là một tool mở rộng để tăng cường sức mạnh cho asp.net. Đây là một bộ bao gồm rất nhiều control hữu ích để phát triển web. Để sử dụng những control này bạn vào http://ajaxcontroltoolkit.codeplex.com/ để download phiên bản phù hợp với  phiên bản .NET framework mà bạn đang dùng. Sau đó tiến hành cài đặt. Sau khi cài đặt xong các bạn tiến hành thêm các control đó vào toolbar. Các bạn chú ý để sử dụng các control thì lúc tạo web bạn phải chọn là ASP.NET AJAX-Enable Website, sau đó để chuột ở bất kỳ vị trí nào trong phần Toolbox (nhấn Ctrl +Alt + Z để hiển thị ra vùng này hoặc chọn View -> Toolbox), chọn chuột phải, chọn Add Tab, đặt tên Tab này là AjaxControlToolkit Controls.
cai dat ajax control toolkit
Trong tool bar sẽ xuất hiện các controls đó:
cai dat ajax control toolkit
Và việc bây giờ là kéo và sử dụng các control này. Khi download bộ AjaxToolkit thì đã kèm theo một web demo tất cả các controls và bạn có thể xem chúng để biết cách sử dụng. Chúc các bạn thành công.
zoom hinh anh trong aspnet
Hôm nay mình sẽ giới thiệu cho các bạn một số cách để zoom hình ảnh trong asp.net. Việc zoom hình ảnh trong một số trường hợp sẽ làm cho web của bạn trở lên sinh động hơn và đặc biệt cái này rất hay trong các website chuyên về ảnh.
Cách 1: Sử dụng Jquery

Đây là cách phổ biến và dễ làm nhất. Trong jquery thì bạn có thể tự code để zoom ảnh hoặc có thể sử dụng các plugin zoom image( các plugin có hiệu ứng đẹp thường là premium).
Mình sẽ giới thiệu cách sử dụng code trước.
Đây là code thêm ảnh của bạn trong file html:
<b>Di chuột qua để zoom ảnh</b><br /><img src="https://lh4.googleusercontent.com/-uJtTzRnZnns/T-MruomepMI/AAAAAAAAAPI/a2SDGzEZi4U/s600/ba6093e865fbff3fe4233aef5221b9c0_41180892.redflavapics1344.jpg" alt="bad cats-webzoomz" id="imgBadCat"></img>​
 Và đây là code jquery cho bức ảnh trên:

 $(document).ready(function(){
       $('# imgBadCat ').width(180);
       $('# imgBadCat ').mouseover(function()
       {
          $(this).css("cursor","pointer");
          $(this).animate({width: "300px"}, 'slow');
       });
 
    $('# imgBadCat ').mouseout(function()
      {
          $(this).animate({width: "180px"}, 'slow');
       });
   });​
zoom hinh anh trong aspnet
Đối với cách này hình ảnh sẽ bị kéo ra và làm giảm chất lượng ảnh nếu ảnh của bạn chất lượng không tốt.
Jquery có rất nhiều plugin hay dành cho việc zoom hình ảnh. Ở đây mình xin giới thiệu một plugin hay được dùng đó là Cloud Zoom. Cloud Zoom rất dễ dàng thực hiện. Bạn dễ dàng có thể tùy chỉnh các ảnh nhỏ , ống kính và cửa sổ ảnh phóng to bằng CSS. Ngoài ra Cloud Zoom còn hỗ trợ một số cấu hình như chiều cao, chiều rộng của cửa sổ zoom, pha màu, độ trong suốt, độ mềm mại khi di chuyển, bật tắt tiêu đề.
Để sử dụng được plugin này bạn cần jquery, plugin Cloud Zoom tại đây. Bạn thêm đoạn code sau vào thẻ head.

<link rel="stylesheet" type="text/css" href="css/jquery-ui-1.7.2.custom"/>
<script type="text/javascript" src="js/jquery.min.js"></script>
<script type="text/javascript" src="js/jquery-ui.min.js"></script>
<link rel="stylesheet" type="text/css" href="css/cloud-zoom.css"/>
<script type="text/javascript" src="js/cloud-zoom.1.0.2.min.js"></script>
Để chỉnh sửa style các bạn có thể vào file cloudy-zoom. Thông tin chi tiết và demo các bạn có thể vào đây xem nha
Cách 2: Sử dụng dll.
Có một vài dll hỗ trợ việc zoom hình ảnh trong asp.net mình xin giới thiệu một dll đó là obout-ImageZooming. Các bạn có thể download dll này tại đây. Các bạn thêm dll vào toolbar, rồi sau đó kéo control đó vào. Các bạn copy thư mục simple vào thư mục style của mình, của mình ở đây là thư mục Styles. Sau khi kéo control vào thì code của bạn sẽ như sau:
<obout:ImageZoom ID="ImageZoom1"  ImageUrl="~/Images/finalbattlebymarioregna.png" Effect="Fading" BigImageUrl="~/Images/finalbattlebymarioregnabig.jpg" StyleFolder="Styles/simple" runat="server" />
Các bạn chú ý 1 số thuộc tính như sau:
ImageUrl: là link ảnh nhỏ.
BigImageUrl: là link ảnh lớn.
StyleFolder: là folder chứa thư mục simple.
Effect: có 2 giá trị là Zooming và Fading đây là 2 chế độ zoom ảnh.
zoom hinh anh trong aspnet
Cách 3: Sử dụng Ajax control.
Về cách cài đặt và sử dụng control này bạn có thể xem tại đây. Sau khi cài đặt xong bạn có thể sử dụng các controls ajax. Ở đây có 1 control là Seadragon control dùng để zoom ảnh. Chi tiết bạn có thể xem tại đây.
Chúc các bạn thành công!
Bi quyet lap trinh Ajax
Giờ đây, khi nhắc đến Ajax, chắc hẳn bạn - những người yêu thích lập trình - không còn cảm thấy xa lạ như trước kia mà thậm chí còn hình dung ra sự giản đơn và thuận tiện biết bao khi ứng dụng nó. Nhưng, liệu bạn đã nắm vững những quy tắc then chốt, những “mẹo nhỏ” hữu ích khi lập trình với Ajax chưa nhỉ? Dù bạn đã rõ hay...trót quên, vẫn xin mời bạn tham khảo bài viết này như một cách ôn lại kiến thức trọng tâm đầy bổ ích!

A. 10 lưu ý vàng cần ghi nhớ

1. Đánh dấu trang và quay lại

Khi tự bạn điều khiển những gì đang diễn ra trên website, sử dụng JavaScript để làm xuất hiện hay biến mất các đối tượng trên trang hay thậm chí là sau khi toàn bộ trang được hiển thị hoàn toàn, bạn sẽ nhanh chóng nhận ra rằng, nút Quay lại (Back) của trình duyệt đã mất hoàn toàn tác dụng! Nút Quay lại này hoạt động bằng cách dùng đối tượng ‘history’ của trình duyệt, lưu lại danh sách tất cả các trang đã được truy cập liên tiếp gần đây nhất. Nhưng, nếu bạn không mở bất kỳ trang mới nào (vâng, như bạn biết, Ajax không cần phải refresh trang khi cần hiển thị thông tin), thì đối tượng ‘history’ kia rõ ràng chẳng lưu được chút manh mối gì. Đây là điều bạn cần lưu ý khi viết các ứng dụng Ajax.

Và nếu như cần thiết, hãy trang bị cho site của bạn một nút Back của riêng mình. Người dùng có thể muốn quay lại cửa sổ trước đó và bạn có nhiệm vụ phải lưu giữ những thông tin di chuyển này. Thật đáng tiếc là ngay cả tiện ích đánh dấu trang (Bookmark) cũng trở nên vô dụng như thế! Đáp án cụ thể cho bài toán này ra sao, xin được dành câu trả lời cho bạn nghiên cứu.

2. Đưa ra thông báo trực quan

Phần lớn thời gian của mình, Ajax hoạt động một cách “thầm lặng” và điều này đôi khi “làm khó” người dùng. Nếu bạn tải về một lượng lớn thông tin và đang chờ đợi phản hồi từ phía máy chủ, chắc chắn một hình ảnh “nhấp nháy” nào đấy sẽ vô cùng có ích với người dùng. Một chiếc đồng hồ cát xoay tròn, và khách hàng sẽ biết rằng họ cần kiên nhẫn! Bức hình này nên là dạng ảnh động (.gif), đồng thời phối hợp với đoạn mã JavaScript dưới đây, hiệu ứng “ẩn, hiện” sẽ càng thêm phần thú vị:

document.getElementById(“image1”).style.visibility= “visible”;
document.getElementById(“image1”).style.visibility= “hidden”;

Rõ ràng rằng, người dùng luôn muốn thấy một tín hiệu nào đấy báo cho họ biết rằng kết nối đang được thực hiện, dạng như thanh tiến trình màu xanh với các gạch nối càng lúc càng đầy cũng là một ý tưởng không tồi, và chắc chắn họ sẽ hài lòng với site của bạn!

3. Hãy để người dùng "tự nhiên"

Các ứng dụng Ajax dường như đang tự mình thi hành “phận sự” bởi chúng được thực thi phía sau giao diện người dùng. Chúng luôn sẵn sàng kết nối tới server, ngay cả khi người dùng không hề mong muốn – trong trường hợp họ vô tình gõ nhầm thông tin chẳng hạn. Rất dễ hình dung cảm giác lúc đó của bạn ra sao, khi ngay lúc bạn vừa gõ một chữ nào đấy, lập tức thông tin này đã được lưu lại database mà chẳng hề “xin phép” lấy một lời. Vậy nên, để tốt nhất, bạn hãy lưu ý một số điều nhỏ sau:

- Đừng bao giờ lưu thông tin ngay lập tức, vừa tốn băng thông mà chưa chắc đã được sự đồng ý của người dùng.

- Hãy nhớ rằng, người dùng luôn muốn “giao tiếp” nhiều hơn với ứng dụng. Hãy làm các thủ tục xác thực dữ liệu ngắn gọn hơn, đỡ mất thời gian hơn và cho người dùng quyền quyết định khi nào thì cần xác thực. Đấy chính là yếu tố tiên quyết trong quá trình thiết kế giao diện người dùng!

- Cuối cùng, đừng quên cung cấp cho người dùng cách thức “sửa sai” thao tác (Undo).

4. Ghi nhớ các trình duyệt

Thế giới thật rộng lớn và cũng có rất nhiều trình duyệt! Người dùng sử dụng trình duyệt họ yêu thích, còn bạn, sẽ ra sao khi chỉ kiểm tra ứng dụng của mình trên một loại trình duyệt mà thôi? Sẽ thật tệ nếu bạn chỉ viết riêng cho Internet Explorer, Firefox mà quên mất rằng, trong thế giới World Wide Web, có vô vàn trình duyệt khác nhau, có loại thậm chí còn không hỗ trợ JavaScript, loại khác lại mặc định tắt chúng đi! Hãy ghi nhớ điều này và xây dựng trước một phương án dự phòng không bao giờ là thừa cả.

5. Cho người dùng thấy sự thay đổi

Sức mạnh của Ajax chính là việc hiển thị dữ liệu trên một trang không cần refresh bằng cách dùng thẻ <meta id="refresher"> hay ngay cả các đối tượng thuần HTML như textbox chẳng hạn. Ứng dụng Ajax có thể thay đổi dữ liệu ngay sau khi chúng thông báo tới server, nhưng lại không thông báo với người dùng. Lấy ví dụ, bạn có một bảng dữ liệu và mặc định rằng sẽ được tự động cập nhật ngay khi database có thay đổi. Người dùng có thể không nhận thấy rằng thông tin đã không còn như trước, rằng bạn đã thay đổi thành phần trang, và đương nhiên là họ đã hụt mất những thông tin quan trọng. Lại một lần nữa, việc phát ra “tín hiệu” thay đổi tới người dùng sẽ giúp bạn rất nhiều. Nếu bạn vừa thay đổi một số chữ, đơn giản thôi, hãy làm cho nó hiển thị khác đi một chút. Đoạn mã sau dùng để thay đổi màu chữ trong thẻ <Div> thành màu đỏ bằng cách sử dụng linh hoạt thuộc tính style:
document.getElementById(“targetDiv”).style.color = “red”;

Còn nếu bạn muốn thay đổi màu nền, hãy dùng đoạn mã

document.getElementById(“targetDiv”).style.background-color = “red”;

Trong đó, “targetDiv” là mã ký hiệu của thẻ Div mà bạn gán cho.

6. Tránh làm chậm trình duyệt

Những ứng dụng Ajax có thể rất lớn và chắc chắn chiếm dụng một lượng tài nguyên vật lí không nhỏ. Tốc độ CPU, bộ nhớ RAM có thể bị “ngốn” rất nhiều nếu như bạn không quan tâm xử lí những đối tượng phức tạp trong quá trình khởi tạo hay tham chiếu. Thông thường, một số nhà phát triển ứng dụng lại xài Ajax cũng chỉ bởi vì nó đang “nóng”!! Quan niệm này cần được lưu tâm hơn! Đúng vậy, Ajax có thể giải quyết được nhiều vấn đế, nhưng bạn không nhất thiết phải dùng nó nếu chẳng có lí do gì. Đừng quên rằng, không phải trình duyệt nào cũng hỗ trợ Ajax (hoặc thậm chí ở chế độ mặc định tắt JavaScript). Vậy nên, đừng vì độ “hot” của Ajax mà quên đi mất tính khả dụng và tôc độ của chương trình bạn nhé!

7. Quản lý những thông tin riêng tư

Với Ajax, thật dễ để bạn gửi thông tin lên server mà không cần sự chú ý của người dùng. Nói theo cách khác, quá trình liên lạc giữa máy khách (client) và máy chủ (server) được diễn ra một cách “thầm lặng”. Nhưng sự thật là, không phải người dùng nào cũng muốn gửi thông tin lên server ngay. Bạn hãy lưu tâm đến vấn đề nhạy cảm này! Mặc dù thương mại điện tử tại Việt Nam chỉ mới chập chững những bước đầu tiên, những tổn thất xảy ra là điều không thể tránh khỏi, nhưng chính vì thế bạn càng phải nâng cao tinh thần bảo vệ người dùng. Internet rõ ràng đầy rẫy những cạm bẫy và sự thật thì môi trường này không phải là nơi hoàn hảo để lưu giữ thông tin có tính riêng tư. Nếu bạn định gửi mã số Thẻ tín dụng hoặc mã Bảo mật của thẻ mà không được sự đồng ý của người dùng, rất có thể bạn sẽ phải đói mặt với nhiều rắc rối! Do đó, hãy cho người dùng thấy được lợi ích của việc hoài nghi: Luôn hỏi trước khi gửi dữ liệu!

8. Xây dựng phương án dự phòng

Sự sống còn của Ajax phụ thuộc vào tín hiệu kết nối tới server, nhưng người dùng thì không phải lúc nào cũng trực tuyến. Server của bạn có thể bị “chết đứng” bất cứ lúc nào, và người dùng rất có thể đang làm việc với các thông tin được lưu trong bộ đệm trình duyệt từ trước đó! Nếu bạn không thể kết nối đến server khi đang online, thì việc xây dựng một phương án dự phòng là rất cần thiết (một server dự trữ chẳng hạn). Cũng đừng quên việc hỗ trợ các trình duyệt không có JavaScript nữa nhé!

9. Hiển thị thông tin trên các cỗ máy tìm kiếm

Cơ chế tìm kiếm của Google dựa trên việc sàng lọc thông tin từ hàng tỉ website theo thông số mà người dùng cung cấp, nhưng ứng dụng Ajax của bạn lại load thông tin lên dựa trên sự tương tác của người dùng mà chẳng cần refresh lại trang - điều này khiến Google sẽ không thể “nhìn” thấy được những thông tin như thế. Vậy nên ghi nhớ kỹ rằng, để thông tin trên website của bạn có thể được các cỗ máy tìm kiếm “mò” tới, bạn cần cung cấp những dữ liệu đặc tả nội dung trang. Làm điều này như thế nào? Không khó! Chỉ cần sử dụng các thẻ<meta> đặt trong phân đoạn của mã trang, các cỗ máy tìm kiếm có thể “đánh dấu” bạn dễ dàng! Và nếu thực sự hứng thú về các thẻ <meta> này, mời bạn ghé qua địa chỉ sau đây để tìm hiểu thêm cặn kẽ:http://www.seocentro.com/tools/search-engines/metatag-analyzer.html

10. Cuối cùng, xin lưu ý đến bộ đệm trình duyệt

Một số trình duyệt như Internet Explorer thường lưu lại thông tin về các website đã truy cập trong bộ đệm riêng của nó (thuật ngữ chuyên ngành gọi là “cache”). Điều này đồng nghĩa với việc, nếu ai đó truy cập đến cùng một địa chỉ URL trong một khoảng thời gian giới hạn nào đấy, thông tin hiện lên cho họ có thể chính là những thông tin vừa xem (được lấy ra từ cache).

Về nguyên tắc, điều này làm quá trình tải trang nhanh chóng hơn, các thông tin được coi là giống với lần truy cập trước có thể sẽ không cần phải tải về lần nữa, mà chỉ cần lấy từ cache ra và hiển thị lên. Nhưng với các website có ứng dụng Ajax thì đây đúng là một vấn đề lớn! Tại sao lại như vậy? Rất đơn giản, ở Ajax không có tính năng làm mới toàn bộ trang mà chỉ là một vài thành phần trong trang! Do đó, nếu khi bạn đã thay đổi dữ liệu trên trang mà kết quả trả về giống hệt như lúc trước thì không còn nghi ngờ gì nữa, bạn chắc hẳn đã gặp rắc rối rồi! Vậy nên, để hạn chế việc lưu thông tin đệm trong ứng dụng Ajax, bạn có thể đặt nhiều thông số header khác nhau khi gửi trả dữ liệu từ server, như đoạn code PHP dưới đây:

header(“Cache-Control”, “no-cache”);
header(“Du-lieu-header-tuy-y”, “no-cache”);
header(“Expires”, “-1”);

Mặc dù vậy, đoạn code trên lại không có tác dụng gì với Internet Explorer do việc lưu thông tin trong cache của IE lại phụ thuộc phần lớn vào địa chỉ trình duyệt. Do đó, có một cách rất hay là luôn thay đổi địa chỉ ứng dụng khi truy vấn đến server. Để làm điều này, bạn chỉ cần khai báo một biến ngẫu nhiên nào đấy (mà server chẳng dùng làm gì) vào phần cuối của địa chỉ, chẳng hạn như:

var myUrl = “data.php?name=bcvt” + “&t=” + new Date().getTime();

Một ý tưởng không tồi khi đưa thêm biến “t” vào địa chỉ URL trên, với “t” là thời gian hiện tại tính bằng mili giây. Vì địa chỉ này chắc chắn chưa từng được truy cập, nó sẽ không bị lưu trong bộ đệm cache trước đây và ứng dụng của bạn chắc chắn sẽ chạy “ngon lành”!

B. Lời kết

Như bạn thấy đó, việc lập trình Ajax tuy hết sức thú vị những cũng ẩn chứa nhiều “rắc rối nho nhỏ” phải không nào? Nếu không biết cách khắc phục chúng hoặc không để ý lưu tâm, các ứng dụng của bạn rất có thể sẽ hoạt động không được như mong muốn khi thiết kế. Hy vọng qua bài viết, các bạn hiểu được phần nào những “yếu điểm” của Ajax để từ đó tìm tòi hơn, sáng tạo ra những “chiêu thức” khắc phục cho riêng mình.

Theo TC BCVT & CNTT
ky thuat lap trinh AjaxAJAX là một trong những từ ngữ thời thượng bậc nhất hiện nay trong giới công nghệ thông tin và là bí quyết kĩ thuật đứng đằng sau các ứng dụng lớn thuộc Google, Flickr, GMail, Google Suggest, Google Maps. Mặc dù cái tên này mới xuất hiện được vài tháng, InfoWorld số tháng 5/2005 đã đưa ra nhận định: Ajax đang tạo nên cuộc cách mạng trong thế giới web.

AJAX LÀ GÌ?

JavaScript, ngôn ngữ lập trình chạy trên trình duyệt đã quá quen thuộc với thế giới web kể từ khi Netscape phát minh ra nó. Sự phát triển của công nghệ và nhu cầu người sử dụng ngày càng cao buộc các nhà phát triển tạo ra một kĩ thuật khác cho phép xử lý các tác vụ phức tạp hơn. Tháng 2/2005, trên Internet bắt đầu lan truyền thuật ngữ Ajax như là một kỹ thuật mới cho ứng dụng web. Những thành công vang dội và sự hấp dẫn kì lạ của Gmail, Google Suggest và Google Maps đã khiến cho Ajax được chú ý một cách đặc biệt.

Ajax là viết tắt của Asynchronous JavaScript and XML - kỹ thuật kết hợp hai tính năng mạnh của JavaScript được các nhà phát triển đánh giá rất cao:

• Gửi yêu cầu (request) đến máy chủ mà không cần nạp lại trang

• Phân tách và làm việc với XML

Các ứng dụng Ajax xoay quanh một tính năng có tên là XMLHttpRequest. Các kĩ sư của dự án Mozilla bắt đầu hỗ trợ tính năng này ở bản Mozilla 1.0 (và Netscape 7). Apple cũng đã thực hiện một tính năng tương tự kể từ Safari 1.2.

Ajax là sự phối hợp một loạt các công nghệ đang thu hút sự quan tâm của giới công nghiệp trong thời gian gần đây. Đó là:

• Trình bày trang web dựa trên XHTML và CSS, các chuẩn của W3C, được Firefox (Mozilla), Safari (Apple), Opera, Netscape 8.0 (nhân Firefox) hỗ trợ rất tốt;

• Biểu diễn động và tương tác sử dụng Document Object Model, chuẩn của W3C;

• Trao đổi và xử lý dữ liệu dùng XML và XSLT, chuẩn của W3C;

• Thu hồi dữ liệu bất đối xứng dùng XMLHttpRequest;

• Dùng JavaScript để liên kết mọi thứ lại với nhau. JavaScript ở đây là ECMAScript, chuẩn của ECMA, không phải là JScript của Microsoft.

Ở các ứng dụng web truyền thống, client sẽ gửi HTTP Request đến web server và web server sẽ gửi trả response chứa các thông tin dưới dạng HTML và CSS. Ajax cho phép tạo ra một Ajax Engine nằm giữa giao tiếp này. Khi đó, các yêu cầu gửi resquest và nhận response do Ajax Engine thực hiện. Thay vì trả dữ liệu dưới dạng HTML và CSS trực tiếp cho trình duyệt, web server có thể gửi trả dữ liệu dạng XML và Ajax Engine sẽ tiếp nhận, phân tách và chuyển hóa thành XHTML+CSS cho trình duyệt hiển thị. Việc này được thực hiện trên client nên giảm tải rất nhiều cho server, đồng thời người sử dụng cảm thấy kết quả xử lý được hiển thị tức thì mà không cần nạp lại trang. Mặt khác, sự kết hợp của các công nghệ web như CSS và XHTML làm cho việc trình bày giao diện trang web tốt hơn nhiều và giảm đáng kể dung lượng trang phải nạp. Đây là những lợi ích hết sức thiết thực mà Ajax đem lại.
LẬP TRÌNH AJAXXử lý HTTP Request

Để gửi một HTTP Request đến server bằng JavaScript, bạn cần tạo một đối tượng của lớp cung cấp tính năng này. Trong IE thì lớp này tồn tại dưới dạng một đối tượng ActiveX có tên là XMLHTTP. Đối tượng này có từ IE 4.0.
var httpRequest = new ActiveXObject("Microsoft.XMLHTTP");

Nếu MSXML được cài đặt thì bạn cũng có thể gọi:

var httpRequest = new ActiveXObject("Msxml2.XMLHTTP");

Ở Mozilla, Firefox, Opera 8.0, Safari và các trình duyệt khác thì lớp này có tên là XMLHttpRequest. Đối tượng XMLHttpRequest không phải là một chuẩn của W3C (tương lai có thể được W3C chấp thuận). Đối tượng XMLHttpRequest được hỗ trợ ở IE 5.0+, Safari 1.2+, Mozilla 1.0+/ Firefox, Opera 8.0+ và Netscape 7+.
var httpRequest = new XMLHttpRequest();

Do sự khác biệt này, nên để ứng dụng của bạn chạy trên nhiều trình duyệt thì bạn có thể làm như sau:

if (window.XMLHttpRequest) { // Mozilla, Safari, ...
httpRequest = new XMLHttpRequest();
} else if (window.ActiveXObject) { // IE
httpRequest = new ActiveXObject("Microsoft.XMLHTTP");
}

Do ActiveX trên IE rất nguy hiểm cho người dùng nên nhiều trường hợp tính năng này được mặc định cấm, vì vậy bạn cần kiểm tra trình duyệt của người sử dụng trước khi gọi đối tượng XMLHTTP. Việc kiểm tra này được thực hiện qua giá trị của window.ActiveXObject. Ví dụ:

if (window.ActiveXObject) {
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP")
}
else { ...}

Một số phiên bản của trình duyệt Mozilla không làm việc đúng khi nhận đáp trả từ server không có header chứa XML mime-type. Để khắc phục vấn đề này, bạn có thể sử dụng phương thức định nghĩa lại phần header do server gửi đến trong trường hợp nó không phải là text/xml.

httpRequest = new XMLHttpRequest();
httpRequest.overrideMimeType(text/xml);

Tiếp theo, bạn cần xác định muốn làm gì sau khi nhận được đáp trả (response) từ server. Giai đoạn này, bạn chỉ cần báo cho đối tượng HTTP request biết hàm JavaScript sẽ làm công việc xử lý đáp trả. Điều này được thực hiện bằng cách thiết lập thuộc tính onreadystatechange của đối tượng thành tên của hàm JavaScript:

httpRequest.onreadystatechange = nameOfTheFunction;

Chú ý không dùng cặp ngoặc đơn () sau tên hàm và không truyền tham số vào hàm đó. Thêm nữa, thay vì trao tên hàm thì bạn có thể sử dụng kĩ thuật định nghĩa hàm động:

httpRequest.onreadystatechange = function() {
// do the thing
};

Sau khi đã khai báo những gì sẽ diễn ra lúc nhận được response, bạn tiến hành gửi request. Bạn cần gọi các phương thức open() và send() của lớp HTTP request:

httpRequest.open(GET, http://www.example.org/some.file, true);
httpRequest.send(null);

Tham số đầu tiên của lời gọi đến open() là phương thức HTTP Request – GET, POST, HEAD hay bất cứ phương thức nào mà bạn muốn sử dụng và phương thức đó cần được server hỗ trợ. Chú ý viết hoa theo quy định của chuẩn HTTP, nếu không thì một số trình duyệt như Firefox có thể không xử lý request.

Tham số thứ hai là địa chỉ URL của trang mà bạn gửi request đến. Do thiết lập bảo mật, bạn không thể gọi các trang trên tên miền của bên thứ ba. Chú ý là nếu bạn không gọi đúng tên miền trên tất cả các trang thì bạn sẽ nhận được thông báo permission denied khi gọi open().

Tham số thứ ba xác lập request có bất đối xứng hay không (asynchronous). Nếu TRUE, thì việc thực thi hàm JavaScript sẽ tiếp tục trong khi response của server chưa đến. Đây là chữ A trong AJAX.

Tham số gửi đến phương thức send() có thể là bất cứ dữ liệu nào mà bạn muốn gửi tới server nếu bạn dùng phương thức POST để gửi request. Dữ liệu sẽ có dạng của một chuỗi truy vấn:

name=value&anothername=othervalue&so=on

Đối tượng XMLHttpRequest có một tập các thuộc tính dùng chung trên tất cả các môi trường hỗ trợ. Dưới đây là danh sách các thuộc tính chủ yếu của đối tượng này.
Xử lý Server Response
Chú ý khi gửi request, bạn cung cấp tên của hàm JavaScript được thiết kế để xử lý response.
httpRequest.onreadystatechange = nameOfTheFunction;
Hãy xem hàm này nên làm gì. Đầu tiên, hàm cần kiểm tra trạng thái của request. Nếu trạng thái có giá trị là 4, nghĩa là ứng dụng của bạn đã nhận được response đầy đủ từ server và đó là dấu hiệu tốt để bạn tiếp tục xử lý nó.

if (httpRequest.readyState == 4) {
// không xảy ra vấn đề gì và bạn đã nhận được response
} else {
// chưa sẵn sàng
}

Tiếp theo cần kiểm tra mã trạng thái của HTTP server response. Tất cả các mã có thể thàm khảo ở site của W3C. Trong bài viết này, chúng ta quan tâm đến response 200 (OK).

if (httpRequest.status == 200) {
// trạng thái response trả lại dấu hiệu tốt!
} else {
// có vấn đề trong việc tiếp nhận và xử lý request,
// ví dụ 404 (Not Found)
// hay 500 (Internal Server Error)
}

Sau khi đã kiểm tra trạng thái của request và mã trạng thái của HTTP response, việc xử lý dữ liệu mà server gửi tới tùy ở bạn. Bạn có hai lựa chọn:

• httpRequest.responseText – trả lại dưới dạng chuỗi văn bản

• httpRequest.responseXML – trả lại dưới dạng đối tượng XMLDocument và bạn có thể duyệt bằng cách sử dụng các hàm JavaScript DOM

Ví dụ với Text Response

Chúng ta sẽ xây dựng một ví dụ đơn giản. Các mã JavaScript gửi request đến một trang HTML, test.html. Trang này chứa dòng "Im a test", sau đó chúng ta dùng alert() để gửi ra nội dung của file đó.

<script type="text/javascript" language="javascript">
var httpRequest = false; //Ban đầu chưa có request
function makeRequest(url) {
httpRequest = false;
if (window.XMLHttpRequest) { // Kiểm tra hỗ trợ đối tượng XMLHttpRequest trên Mozilla, Safari,...
httpRequest = new XMLHttpRequest();
if (httpRequest.overrideMimeType) {
httpRequest.overrideMimeType(text/xml);
}
} else if (window.ActiveXObject) { // Trên IE, kiểm tra xem ActiveX có bị disable
try {
httpRequest = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try {
httpRequest = new ActiveXObject("Microsoft.XMLHTTP");
} catch (e) {
//Xử lý khác của bạn
}
}
}
if (!httpRequest) {
alert(Giving up :( Cannot create an XMLHTTP instance);
return false;
}
httpRequest.onreadystatechange = alertContents;
httpRequest.open(GET, url, true);
httpRequest.send(null);
}
function alertContents() {
if (httpRequest.readyState == 4) {
if (httpRequest.status == 200) {
alert(httpRequest.responseText);
} else {
alert(There was a problem with the request.);
}
}
}
</script>
<span
style="cursor: pointer; text-decoration: underline"
onclick="makeRequest(test.html)">
<!-- Thông điệp của bạn ở đây -->
</span>
Trong ví dụ này, người dùng kích chuột vào liên kết "Make a request" trên trình duyệt, việc này sẽ gọi hàm makeRequest() cùng với một tham số – cái tên test.html của file HTML trong cùng thư mục. Sau đó request được thực hiện.

Tiếp theo, bạn xác định hàm alertContents() sẽ xử lý trường hợp onreadystatechange. alertContents() kiểm tra xem response đã nhận được hay chưa và nếu OK thì nó sẽ thực thi alert() để gửi ra nội dung của file test.html.
Ví dụ với XML Response
Ví dụ vừa khảo sát minh họa cho cách dùng thuộc tính reponseText của đối tượng request. Ví dụ dưới đây sẽ minh họa cho thuộc tính responseXML.

Việc đầu tiên là chuẩn bị trang XML sẽ được dùng cho request về sau. Trang dưới có tên là test.xml:

ky thuat lap trinh Ajax


<?xml version="1.0" ?>
<root>
Im a test.
</root>

Trong dòng mã của ví dụ trên chúng ta chỉ cần thay dòng request bằng:
...
onclick="makeRequest(test.xml)">
...
Sau đó trong alertContents() chúng ta cần thay dòng alert(httpRequest.responseText); với:
var xmldoc = httpRequest.responseXML;
var root_node = xmldoc.getElementsByTagName(root).item(0);
alert(root_node.firstChild.data);
responseXML lấy giúp chúng ta đối tượng XMLDocument và chúng ta sẽ dùng các phương thức DOM để truy cập một số dữ liệu có trong trang XML.
Mã nguồn ví dụ có thể tải về ở website TGVT, bạn cũng có thể chạy trực tiếp tại http://goldenkey.edu.vn/ajax.
onreadystatechange
Bộ xử lý sự kiện cho một sự kiện phát sinh mỗi khi có sự thay đổi trạng thái.
readyState
Status: 0 = uninitialized 1 = loading 2 = loaded 3 = interactive 4 = complete
responseText
Dữ liệu dạng String trả về từ server
responseXML
Đối tượng tài liệu tương thích DOM của dữ liệu trả về từ server
status
Mã trạng thái dạng số do server trả về, như 404 cho "Not Found" hay 200 cho "OK"
statusText
Thông điệp dạng String message đi kèm với mã trạng thái.
Phạm Công Định
Trung tâm ngôn ngữ Golden Key
--------------------------------
Tài liệu tham khảo
1. Tài liệu hội thảo Effective Ajax 8/2005 (Jim Halberg và Rob Sanheim)
2. Mã trạng thái HTTP: http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html
3. DOM: http://www.w3.org/DOM/

Theo PCWorld Việt Nam