基于Ajax的数据验证——CallBackObject.js

翻译|其它|编辑:郝浩|2007-08-30 10:07:34.000|阅读 1173 次

概述:

# 界面/图表报表/文档/IDE等千款热门软控件火热销售中 >>

// JScript 
function CallBackObject()  
{  
    this.XmlHttp = this.GetHttpObject();  
}  
 
CallBackObject.prototype.GetHttpObject = function()  
{  
    var xmlhttp;  
    /*@cc_on 
    @if (@_jscript_version >= 5) 
    try  
    { 
        xmlhttp = new ActiveXObject("Msxm12.XMLHTTP"); 
    } 
    catch (e) 
    { 
        try 
        { 
            xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); 
        } 
        catch (E) 
        { 
            xmlhttp = false; 
        } 
    } 
    @else 
    xmlhttp = false; 
    @end @*/ 
    if (!xmlhttp && typeof XMLHttpRequest != 'undefined')  
    {  
        try 
        {  
            xmlhttp = new XMLHttpRequest();  
        }  
        catch (e)  
        {  
            xmlhttp = false;  
        }  
    }      
    return xmlhttp;  
}  
 
CallBackObject.prototype.DoCallBack = function(eventTarget,eventArgument)  
{  
    var theData = '';  
    var theform = document.forms[0];  
    var thePage = window.location.pathname + window.location.search;      
    var eName = '';  
         
    theData = '__EVENTTARGET=' + escape(eventTarget.split("$").join(":")) + '&';  
    theData += '__EVENTARGUMENT=' + eventArgument + '&';  
    theData += '__VIEWSTATE=' + escape(theform.__VIEWSTATE.value).replace(new RegExp('+','g'),'%2b') + '&';  
    theData += 'IsCallBack=true&';  
      
    for(var i=0; i < theform.elements.length; i++)  
    {  
        eName = theform.elements[i].name;  
        if ( eName && eName != '')  
        {  
            if(eName == '__EVENTTARGET' ||   
               eName == '__EVENTARGUMENT' ||  
               eName == '__VIEWSTATE' )  
            {  
                // Do Nothing     
            }  
            else 
            {  
                theData = theData +   
                          escape(eName.split("$").join(":")) + '=' + theform.elements[i].value;  
                if( i != theform.elements.length - 1)  
                {  
                    theData = theData + '&';  
                }  
            }  
        }  
    }  
      
    if(this.XmlHttp)  
    {  
        if(this.XmlHttp.readyState == 4 || this.XmlHttp.readyState == 0)  
        {  
            var oThis = this;  
            this.XmlHttp.open('POST',thePage,true);  
            this.XmlHttp.onreadystatechange = function()  
            {  
                oThis.ReadyStateChange();  
            }  
            this.XmlHttp.setRequestHeader('Content-Type','application/x-www-form-urlencoded');              
            this.XmlHttp.send(theData);              
        }  
    }  
}  
 
CallBackObject.prototype.AbortCallBack = function()  
{  
    if(this.XmlHttp)  
    {  
        this.XmlHttp.abort();  
    }      
}  
 
CallBackObject.prototype.OnLoading = function()  
{  
    //Loading  
}  
 
CallBackObject.prototype.OnLoaded = function()  
{  
    //Loaded  
}  
 
CallBackObject.prototype.OnInteractive = function()  
{  
    //Interactive  
}  
 
CallBackObject.prototype.OnComplete = function(responseText,responseXml)  
{  
    //Complete  
}  
 
CallBackObject.prototype.OnAbort = function()  
{  
    //Abort  
}  
 
CallBackObject.prototype.OnError = function(status,statusText)  
{  
    //Error  
}  
 
CallBackObject.prototype.ReadyStateChange = function()  
{          
    if(this.XmlHttp.readyState == 1)  
    {  
        this.OnLoading();     
    }  
    else if(this.XmlHttp.readyState == 2)  
    {  
        this.OnLoaded();          
    }  
    else if(this.XmlHttp.readyState == 3)  
    {  
        this.OnInteractive();  
    }  
    else if(this.XmlHttp.readyState == 4)  
    {  
        if(this.XmlHttp.status == 0)  
        {  
            this.OnAbort();  
        }  
        else if(this.XmlHttp.status == 200 && this.XmlHttp.statusText == "OK")  
        {  
            this.OnComplete(this.XmlHttp.responseText,this.XmlHttp.responseXML);  
        }  
        else 
        {  
            this.OnError(this.XmlHttp.status,this.XmlHttp.statusText,this.XmlHttp.responseText);  
        }  
    }  
}

 


标签:

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@evget.com

文章转载自:个人博客

为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
扫码咨询


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP