+ -
当前位置:首页 → 问答吧 → 【AJAX】T.T.R--Ajax类,让ajax更容易

【AJAX】T.T.R--Ajax类,让ajax更容易

时间:2007-11-01

来源:互联网

为了让新手使用ajax更容易,简单写了一个Ajax类,说是类不如说是伪类,应用ajax更加方便

这里还附带了一些常用函数,不喜欢的可以删掉拉。
复制内容到剪贴板
代码:
//////////////////////////////////////////
//Programer:T.T.R                                                //
//Date:2007-03-03                                                //
//QQ:252319874                                                        //
//HP:http://www.Gx3.cn,http://Gx3.cn        //
//////////////////////////////////////////

//JS VisualClass Main
function ClassAjax()
{
        this.Created=false;
        this.ajax=null;
        this.CreateAjax=cAjax;
        this.FormItem=GetFormItem;
        this.Send=SendData;
        this.InitUrl=InitUrl;
        this.GetText=GetText;
        this.trim=trim;
        this.ctldiv=ctldiv;
        this.setidval=setidval;
        this.getidval=getidval;
        this.isemail=isemail;
}

//InitAjaxObject
function InitAjax()
{
        var ajax=false;
        try
        {
                ajax=new ActiveXObjdect("Msxml2.XMLHTTP");
        }
        catch (e)
        {
                try
                {
                        ajax=new ActiveXObject("Microsoft.XMLHTTP");
                }
                catch (E)
                {
                        return false;
                }
        }
        if(!ajax && typeof XMLHttpRequest!="undefined")
        {
                ajax=new XMLHttpRequest();
        }
        return ajax;
}

//CreateAjax
function cAjax()
{
        this.ajax=InitAjax();
        this.Created=true;
}


//Get Form Item
function GetFormItem(objForm)
{
        if(!this.Created)
        {
                alert("Don't Create Ajax Object!")
                return;
        }
        if(!objForm)
        {
                alert("Don't Set objForm!")
                return;
        }
       
        var f=eval("document."+objForm+".elements");
        var objForm="document."+objForm;
        var str="";
        var strCheckbox="";
        var strSelect="";
        for(i=0;i<f.length;i++)
        {
                if(f[i].type=="radio")
                {
                        var obj=eval(objForm+"."+f[i].name);
                        for(j=0;j<obj.length;j++)
                        {
                                if(obj[j].checked)
                                {
                                        str+=f[i].name+"="+obj[j].value+"&";
                                }
                        }
                        i=i+(obj.length-1);
                }else if(f[i].type=="checkbox"){
                        var obj=eval(objForm+"."+f[i].name)
                        for(j=0;j<obj.length;j++)
                        {
                                if(obj[j].checked)
                                {
                                        strCheckbox+=obj[j].value+",";
                                }
                        }
                        strCheckbox=strCheckbox.substr(0,strCheckbox.length-1);
                        str+=f[i].name+"="+strCheckbox+"&";
                        i=i+(obj.length-1);
                }else if(f[i].type=="select-multiple"){
                        var obj=eval(objForm+"."+f[i].name+".options");
                        for(j=0;j<obj.length;j++)
                        {
                                if(obj[j].selected)
                                {
                                        strSelect+=obj[j].value+",";
                                }
                        }
                        strSelect=strSelect.substr(0,strSelect.length-1);
                        str+=f[i].name+"="+strSelect+"&";
                }else{
                        str+=f[i].name+"="+f[i].value+"&";
                }
        }
        str=str.substr(0,str.length-1)
        return str;
}

//Send Data and Request Text
function SendData(method,sendstr,action,callbackfunc,errfunc)
{
       
        if(!this.Created)
        {
                alert("Don't Create Ajax Object!")
                return;
        }
        if(!method || !action || typeof callbackfunc!="function" || typeof errfunc!="function")
        {
                alert("Function SendData() 参数错误!")
                return;
        }
       
        var ajax=this.ajax;
        var method=method.toUpperCase();
        if(method=="POST")
        {
                //post方法代码
                //var action=this.InitUrl(action,sendstr);
                ajax.open(method,action,true);
                ajax.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
                ajax.send(sendstr);
                ajax.onreadystatechange=function(){
                        if(ajax.readyState==4 && ajax.Status==200)
                        {
                                if(ajax.Status==200)
                                {
                                        callbackfunc();
                                }else{
                                        errfunc();
                                }
                        }
                }
        }
        if(method=="GET")
        {
                //get方法代码
                var action=this.InitUrl(action,sendstr);
                ajax.open(method,action,true)
                ajax.onreadystatechange=function(){
                        if(ajax.readyState==4 && ajax.Status==200)
                        {
                                callbackfunc();
                        }else{
                                errfunc();
                        }
                }
                ajax.send(null)
        }
}

//Void ResponseText Function
function GetText()
{
        if(!this.Created)
        {
                alert("Don't Create Ajax Object!")
                return;
        }
        var ajax=this.ajax
        var strText=ajax.responseText;
        return strText;
}


//InitUrl
function InitUrl(url,sendstr)
{
        if(!this.Created)
        {
                alert("Don't Create Ajax Object!")
                return;
        }
        if(!url || !sendstr)
        {
                alert("Function InitUrl() 参数错误!")
                return;
        }
        var url=url.split("?")
        if(url[1]=="" || typeof url[1]=="undefined")
        {
                url=url[0]+"?"+sendstr;
        }else{
                url=url[0]+url[1]+"&"+sendstr;
        }
        return url;
}

function trim(str){
   return str.replace(/(^\s*)|(\s*$)/g, "");
}

function ctldiv(id,mod){
        if( mod == "show"){
        document.getElementById(id).style.display="";
        }else if(mod == "hide"){
                document.getElementById(id).style.display="none";
        }else{
                alert("Function InitUrl() 参数错误!")
                return;
        }
}

function setidval(id,value) {
        document.getElementById(id).innerHTML = value;
}

function getidval(id) {
    return document.getElementById(id).innerHTML;
}

function isemail(str){
        var result=str.match(/^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/);
        if(result==null) return false;
        return true;
}
应用实例,也许写的不够详细,如果有问题的朋友可以跟帖,我继续回答。
复制内容到剪贴板
代码:
<script language="javascript">
var oAjax=new ClassAjax();
oAjax.CreateAjax();
str=oAjax.FormItem(formName);
oAjax.Send("post",str,"PostBet.php",CallBack2,CallBack_E2);
function CallBack2()
{
        //alert("成功!");
        alert(oAjax.GetText());
        location="User.php";
}
function CallBack_E2()
{
        alert("失败!");
        location="User.php";
}
[ 本帖最后由 T.T.R 于 2007-11-1 09:27 编辑 ]

作者: T.T.R   发布时间: 2007-11-01

支持一下  最近开始学习这些东西了

作者: bg6aer   发布时间: 2007-11-01

呵呵 师傅大象了啊

作者: niohe   发布时间: 2007-11-01

问个简单问题
window.open("post","url",true)
如果url为相对路径时为什么会出错
提示找不到文件
用绝对路径却正常
难倒只能用绝对路径吗

作者: yang_ysb   发布时间: 2007-11-06

作者: 17too   发布时间: 2007-11-07

window.open的第一个参数才是url,而不是传递方式

作者: T.T.R   发布时间: 2007-11-07

这个写的不好

作者: T.T.R   发布时间: 2008-03-27

学习

作者: pszehua   发布时间: 2008-03-27

作者: luzhou   发布时间: 2008-03-27

  早点放出来。或是我早点看到就好了

作者: 逆雪寒   发布时间: 2008-03-28

咋地了?有用到么?

作者: T.T.R   发布时间: 2008-03-28