Trang chủTrang chủ Liên hệLiên hệ
PHP BASIC

» Events  » References  » Tutorials  » Hướng dẫn  RSS Feed2.0 Đăng ký | Đăng nhập

Dịch PHP Manual (đã dịch 86 /1248)
Thêm bài viết mới
#Thêm ý kiến
Emotion|Show / Hide

Từ khi phpbasic có thay đổi, mình chưa kịp post bài nào, hôm n
ay khởi động lại.
Trong phpbasic này chắc hẳn mọi người đều đã xử dụng qua ajax.
Nhưng ít người để ý đến kỹ thuật cùng một lúc request nhiều lần. Có thể các bạn đã dùng rồi nhưng không để ý, bởi vì trong các thư viện JS họ cũng hỗ trợ luôn cái này.
Mục đích của kỹ thuật này là làm tăng tốc độ trang web.
VD các bạn có thể tưởng tượng 1 tình huống cần thay đổi cùng một lúc nội dung của 10 div độc lập, theo 10 url khác nhau. Bình thường mọi người sẽ phải làm lần lượt từng div một, như vậy sẽ lâu hơn so với việc request một lúc 10 div.

Sau đây là code :

<?
function Request()
{
    if(
arguments.length==1) {
        var
ADN = new Object();
        var
Ajax = new Object();
        
this.options = new function()
            {
            
this.address = null;
            
this.method = "POST";
            
this.data = null;
            
this.abort = null;
            
this.onRequest = null;
            
this.onSuccess = null;
            
this.onFailure = null;
            };

        for (var
i in this.options){ADN[i]=this.options[i];}
        for (var
i in arguments[0]){ADN[i]=arguments[0][i];}


        function
createRequest(){            
            if (
window.ActiveXObject){Ajax = new ActiveXObject("Microsoft.XMLHTTP");}
            else{
Ajax = new XMLHttpRequest();}
            }
        function
isReady(){return(Ajax.readyState==4 || Ajax.readyState==0);}
        function
isComplete(){return Ajax.readyState==4;}
        function
isSuccess(){return((Ajax.status >= 200) && (Ajax.status < 300));}
        function
setHeader(){
            if (
ADN.method.toUpperCase()=="POST"){
                
Ajax.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
                
Ajax.setRequestHeader("Content-length", ADN.data.length);
                
Ajax.setRequestHeader("Connection", "close");
                }
            }
        function
fixMethod(){
            
            }
        
//xu li theo tien trinh    
        
function processRequest(){
                if (!
isReady()){
                    if (
typeof ADN.onRequest=="function"){ADN.onRequest.call(Ajax);}
                    else {eval(
ADN.onRequest);}
                    }
                if (
isComplete()){
                    if (
isSuccess()){
                        if (
typeof ADN.onSuccess=="function"){ADN.onSuccess.call(Ajax);}
                        else {eval(
ADN.onSuccess)}
                        }
                    else{
                        if (
typeof ADN.onFailure=="function"){ADN.onFailure.call(Ajax);}
                        else {eval(
ADN.onFailure)}
                    }
                }
            }
        
//ket thuc xu li
        //bat dau thuc hien request
        
createRequest();
        if (
isReady()){
            if (
ADN.data!=nullADN.method.toUpperCase()=="POST" &&  ADN.data!="" ){
                
Ajax.open("POST",ADN.address, true);
                
setHeader();
                
Ajax.send(ADN.data);
                }
            else{
                
Address = ADN.address+"?"+ADN.data;
                
Ajax.open("GET",Address,true);
                
Ajax.send(null);
                }
            }
        
Ajax.onreadystatechange = processRequest;
            
    }
// end if
}// ket thuc lop request

?>

Hàm này được viết để chấp nhận cả 2 các phương thức request thông thường là POST và GET.
Cách thức sử dụng giống như trong Prototype.
VD: để tạo một request mới :

var one = new Request({
       address: "response.ajax.php",
    method: "POST",
    data: "post=b",
    onSuccess:  function() {alert(this.responseText)},
    onFailure : function() {alert("có lỗi")}

});

Các bạn tham khảo qua, có gì góp ý cho mình.

Tác giả:uoon

Show / Hide
#Thêm ý kiến

Add phpBasic to your browser's search box
Digg.com delicious Furl Google Bookmark Reddit Slashdot Yahoo My Web

Tableless template Framework PHP functions
 


XHTML Standard
Xây dựng & phát triển bởi tất cả các thành viên.
Powered by http://phpbasic.com