欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

一个封装的Ajax类

程序员文章站 2022-08-10 09:01:23
用法:  new ajax().request(url,cmd,async,method,poststring,title)  参数:&nbs...

用法: 
new ajax().request(url,cmd,async,method,poststring,title) 
参数: 
url: 请求页面url(必填) 
cmd: 返回值处理函数(必填) 
async: 是否异步 ,(ture|false), 默认true 
method: 请求方式,(post|get), 默认get 
poststring: 请求方式为post时,请求内容 
title: 请求内容标题 

复制代码 代码如下:

// ajax 封装 2007-3-13
function createxmlhttprequest() {
    try {        
            if (window.xmlhttprequest) {
                    return new xmlhttprequest();
            }
            else if (window.activexobject) {
                return new activexobject("microsoft.xmlhttp");
            }
        }
        catch (e) {alert("xmlhttprequest对象无法创建!请检查ie安全设置!");}
}
function messagediv(t)
{
    var v = document.createelement("<div>");
    v.innerhtml = "<table style=\"width:300px;\" id=message>" +
                  "<tr style=\"font-size:12px;background-color:#eeeeff;color:#227933;height:20px\">" + 
                  "<td style=\"padding:2px;border-top:1px solid #e1e1e1;border-left:1px solid #e1e1e1;border-bottom:1px solid #818181;border-right:1px solid #a1a1a1\">" +
                  "<nobr><img src=refresh.gif align=absmiddle> " + t + ",<span id=span1>连接未初始化...</span></nobr></td></tr></table>";
    var l = document.getelementsbyname("message").length;
    v.style.csstext = "position:absolute;bottom:" + (l*24) + "px;left:0px;display:none";
    document.body.appendchild(v);
    this.clear = function () {
        document.body.removechild(v);
        var msg = document.getelementsbyname("message");
        for (var i=0;i<msg.length;i++){
            msg[i].parentnode.style.csstext = "position:absolute;bottom:" + (i*24) + "px;left:0px";
        }
    }
    this.showmsg = function (s) {
        v.style.display = "";
        v.all.span1.innerhtml = s;
    }
}
function ajax() {
    var x = new createxmlhttprequest();
    this.request = function (url,cmd,async,method,poststring,title) {
        if (method!="post") method = "post"; else method = "get";
        if (async!=true) async = true; else async = false;
        if (typeof(poststring)!="string") poststring="";
        if (typeof(title)!="string") title="正在获取数据"; else title="正在获取" + title;
        var msgbox = new messagediv(title);
        x.onreadystatechange = function ()
        {
            if (async) switch (x.readystate) {
            case 1:
                msgbox.showmsg("正在初始化连接...");
                return;
            case 2:
                msgbox.showmsg("正在发送数据...");
                return;
            case 3:
                msgbox.showmsg("正在接收数据...");
                return;
            case 4:
                msgbox.showmsg("数据接收完成...");
                if (x.status == 200) {
                    cmd(x.responsetext);
                    msgbox.clear();
                }
                else {
                    msgbox.showmsg("请求失败," + x.statustext + "(" + x.status + ")");
                    settimeout(msgbox.clear,3000);
                }
                return;
            }
        }
        x.open (method,url,async);
        if (method=="post") {msgbox.showmsg("正在接收数据...");x.send(poststring);} else x.send();
        if (!async) {
            msgbox.showmsg("数据接收完成...");
            cmd(x.responsetext);
            msgbox.clear();
        }
    }    
}