佳木斯湛栽影视文化发展公司

主頁 > 知識庫 > 一個方便AJAX開發(fā)的通用類

一個方便AJAX開發(fā)的通用類

熱門標簽:電子圍欄 阿里云 團購網(wǎng)站 Mysql連接數(shù)設(shè)置 Linux服務(wù)器 科大訊飛語音識別系統(tǒng) 服務(wù)器配置 銀行業(yè)務(wù)
Name: AJAXRequest
Author: HotHeart(xujiwei)
Site: http://www.xujiwei.cn/
Blog: http://www.xujiwei.cn/blog/
Copyright (c) 2006, All Rights Reserved

類名:AJAXRequest
版本:0.3
日期:2006-12-18
介紹:AJAXRequest是一個方便AJAX開發(fā)的通用類,可以方便地進行一些AJAX中需要的操作,從而簡化開發(fā)步驟,減少重復(fù)代碼編寫量。

創(chuàng)建方法:
var ajaxobj=new AJAXRequest([url],[callback],[content],[method],[async]);
如果創(chuàng)建失敗則返回false

屬性:
url       - 請求URL,字符串,默認為空
callback  - 回調(diào)函數(shù),即返回響應(yīng)內(nèi)容時調(diào)用的函數(shù),默認為直接返回,回調(diào)函數(shù)有一個參數(shù)為XMLHttpRequest對象,即定義回調(diào)函數(shù)時要這樣:function mycallback(xmlobj)
content   - 請求的內(nèi)容,如果請求方法為POST需要設(shè)定此屬性,默認為空字符串
method    - 請求方法,字符串,POST或者GET,默認為POST
async      - 是否異步,true為異步,false為同步,默認為true

方法
function send([url],[callback],[content],[method],[async])
發(fā)送請求,可選參數(shù)列表為空就使用對象屬性

function get([url],[callback])
使用GET方法請求一個URL,可選參數(shù)默認使用對象屬性

function post(form_obj,[callback],[url],[method])
發(fā)送一個表單到指定URL,form_obj為指定表單對象,可選參數(shù)為空時使用對象屬性

示例:
1. get方法
function test1() {
    var ajax=new AJAXRequest;
    ajax.get(
        "test.asp",
        function(obj) {
            document.getElementById("test1").value=obj.responseText;
        }
    );
}
2. post方法
function test2() {
    var ajax=new AJAXRequest;
    ajax.post(
        document.getElementById("test2c"),
        function(obj) {
            document.getElementById("test2r").innerHTML=obj.responseText;
        }
    );
}
復(fù)制代碼 代碼如下:

/*------------------------------------------
Author: xujiwei
Website: http://www.xujiwei.cn
E-mail: vipxjw@163.com
Copyright (c) 2006, All Rights Reserved
------------------------------------------*/
function AJAXRequest() {
    var xmlObj = false;
    var CBfunc,ObjSelf;
    ObjSelf=this;
    try { xmlObj=new XMLHttpRequest; }
    catch(e) {
        try { xmlObj=new ActiveXObject("MSXML2.XMLHTTP"); }
        catch(e2) {
            try { xmlObj=new ActiveXObject("Microsoft.XMLHTTP"); }
            catch(e3) { xmlObj=false; }
        }
    }
    if (!xmlObj) return false;
    if(arguments[0]) this.url=arguments[0]; else this.url="";
    if(arguments[1]) this.callback=arguments[1]; else this.callback=function(obj){return};
    if(arguments[2]) this.content=arguments[2]; else this.content="";
    if(arguments[3]) this.method=arguments[3]; else this.method="POST";
    if(arguments[4]) this.async=arguments[4]; else this.async=true;
    this.send=function() {
        var purl,pcbf,pc,pm,pa;
        if(arguments[0]) purl=arguments[0]; else purl=this.url;
        if(arguments[1]) pc=arguments[1]; else pc=this.content;
        if(arguments[2]) pcbf=arguments[2]; else pcbf=this.callback;
        if(arguments[3]) pm=arguments[3]; else pm=this.method;
        if(arguments[4]) pa=arguments[4]; else pa=this.async;
        if(!pm||!purl||!pa) return false;
        xmlObj.open (pm, purl, pa);
        if(pm=="POST") xmlObj.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
        xmlObj.onreadystatechange=function() {
            if(xmlObj.readyState==4) {
                if(xmlObj.status==200) {
                    pcbf(xmlObj);
                }
                else {
                    pcbf(null);
                }
            }
        }
        if(pm=="POST")
            xmlObj.send(pc);
        else
            xmlObj.send("");
    }
    this.get=function() {
        var purl,pcbf;
        if(arguments[0]) purl=arguments[0]; else purl=this.url;
        if(arguments[1]) pcbf=arguments[1]; else pcbf=this.callback;
        if(!purl!pcbf) return false;
        this.send(purl,"",pcbf,"GET",true);
    }
    this.post=function() {
        var fo,pcbf,purl,pc,pm;
        if(arguments[0]) fo=arguments[0]; else return false;
        if(arguments[1]) pcbf=arguments[1]; else pcbf=this.callback;
        if(arguments[2])
            purl=arguments[2];
        else if(fo.action)
            purl=fo.action;
        else
            purl=this.url;
        if(arguments[3])
            pm=arguments[3];
        else if(fo.method)
            pm=fo.method.toLowerCase();
        else
            pm="post";
        if(!pcbf!purl) return false;
        pc=this.formToStr(fo);
        if(!pc) return false;
        if(pm) {
            if(pm=="post")
                this.send(purl,pc,pcbf,"POST",true);
            else
                if(purl.indexOf("?")>0)
                    this.send(purl+""+pc,"",pcbf,"GET",true);
                else
                    this.send(purl+"?"+pc,"",pcbf,"GET",true);
        }
        else
            this.send(purl,pc,pcbf,"POST",true);
    }
    // formToStr
    // from SurfChen surfchen@gmail.com>
    // @url     http://www.surfchen.org/
    // @license http://www.gnu.org/licenses/gpl.html GPL
    // modified by xujiwei
    // @url     http://www.xujiwei.cn/
    this.formToStr=function(fc) {
        var i,query_string="",and="";
        for(i=0;ifc.length;i++) {
            e=fc[i];
            if (e.name!='') {
                if (e.type=='select-one') {
                    element_value=e.options[e.selectedIndex].value;
                }
                else if (e.type=='checkbox' || e.type=='radio') {
                    if (e.checked==false) {
                        continue;    
                    }
                    element_value=e.value;
                }
                else {
                    element_value=e.value;
                }
                element_value=encodeURIComponent(element_value);
                query_string+=and+e.name+'='+element_value;
                and="";
            }
        }
        return query_string;
    }
}

標簽:江蘇 蚌埠 萍鄉(xiāng) 衢州 棗莊 衡水 廣元 大理

巨人網(wǎng)絡(luò)通訊聲明:本文標題《一個方便AJAX開發(fā)的通用類》,本文關(guān)鍵詞  ;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 收縮
    • 微信客服
    • 微信二維碼
    • 電話咨詢

    • 400-1100-266
    舒城县| 新化县| 百色市| 崇阳县| 杭锦旗| 昭平县| 乌苏市| 从化市| 临湘市| 深州市| 鹤峰县| 双柏县| 宁河县| 胶州市| 固始县| 昌宁县| 乳山市| 兖州市| 介休市| 定远县| 府谷县| 炉霍县| 虹口区| 马鞍山市| 余姚市| 名山县| 甘洛县| 嘉兴市| 新巴尔虎右旗| 稻城县| 泊头市| 徐汇区| 绥德县| 比如县| 札达县| 宜宾县| 磐石市| 华亭县| 周至县| 泰顺县| 东阳市|