zoukankan      html  css  js  c++  java
  • ValidateBox控件使用Ajax改进

      之前的ValidateBox控件单击更换图片时,整个页面都要刷新,所以想使用Ajax来试试可不可以改进。经过一试,Ajax还真管用!

      AjaxComm.js代码:

    // ********************************************************
    //
     AjaxComm 1.1 for Asp.Net
    //
     Designed by Faib Studio.
    //
     Copyright 2007
    //
     Email faib920@126.com or QQ 55570729
    //
     ********************************************************
    function AjaxComm()
    {
        
    this.xmlHttp = null;
        
    var clsids = ["Msxml2.XMLHTTP.6.0","Msxml2.XMLHTTP.5.0","Msxml2.XMLHTTP.4.0","Msxml2.XMLHTTP.3.0","Msxml2.XMLHTTP.2.6","Microsoft.XMLHTTP.1.0","Microsoft.XMLHTTP.1","Microsoft.XMLHTTP"];

        
    for(var i=0; i<clsids.length && this.xmlHttp == null; i++)
        
    {
            
    try{
                
    this.xmlHttp = new ActiveXObject(clsids[i]);
            }
     catch(ex) {}
        }

    }


    AjaxComm.prototype.open 
    = function (metohod, url)
    {
        
    if(this.xmlHttp)
        
    {
            
    if(this.xmlHttp.readyState == 4 || this.xmlHttp.readyState == 0 )
            
    {
                
    var oThis = this;
                
    this.xmlHttp.open(metohod, url);
                
    this.xmlHttp.onreadystatechange = function(){ oThis.readyStateChange(); };
                
    this.xmlHttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
                
    this.xmlHttp.send(null);
            }

        }

    }


    AjaxComm.prototype.abortCallBack 
    = function()
    {
      
    if(this.xmlHttp)this.xmlHttp.abort();
    }

     
    AjaxComm.prototype.onLoading 
    = function()
    {
    }

     
    AjaxComm.prototype.onLoaded 
    = function()
    {
    }

     
    AjaxComm.prototype.onInteractive 
    = function()
    {
    }

     
    AjaxComm.prototype.onComplete 
    = function(responseText, responseXml)
    {
    }

     
    AjaxComm.prototype.onAbort 
    = function()
    {
    }

     
    AjaxComm.prototype.onError 
    = function(status, statusText)
    {
    }


    AjaxComm.prototype.readyStateChange 
    = function ()
    {
      
    ifthis.xmlHttp.readyState == 1 )
      
    {
        
    this.onLoading();
      }

      
    else ifthis.xmlHttp.readyState == 2 )
      
    {
       
    this.onLoaded();
      }

      
    else ifthis.xmlHttp.readyState == 3 )
      
    {
       
    this.onInteractive();
      }

      
    else ifthis.xmlHttp.readyState == 4 )
      
    {
       
    ifthis.xmlHttp.status == 0 )
          
    this.onAbort();
        
    else ifthis.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);   
      }

    }

      ValidateBox的改进:
            private bool m_xx = false;

            
    protected override void OnInit(EventArgs e)
            
    {
                
    //注册一个js文件到缓存中
                Util.RegisterCacheFile(Page, "AjaxComm""ajaxcomm.fbs.ashx""Resource.AjaxComm.js");//对应到AjaxComm.js
                
    //输出控件初始化脚本
                Util.RegisterStartupScript(Page, "ValidateBox"@"
    <script language=""javascript"" type=""text/javascript"">
    function ValidateBox_Change(url)
    {
        var ajax = new AjaxComm();
        ajax.onComplete = function (rText)
        {
            var v = rText.split(';');
            var val = event.srcElement;
            var src = val.src;
            src = src.substr(0, src.indexOf('?'));
            val.src = src + '?' + v[0];
            if(v.length > 1)
            {
                val.text = v[1];
                val.value = v[1].toLowerCase();
            }
        }
        ajax.open(""GET"", url);
    }
    </script>
    ");
                
    base.OnInit (e);
            }


            
    protected override void OnUnload(EventArgs e)
            
    {
                
    if(m_ValidateKey != null && m_ValidateKey != "" && !m_xx)
                
    {
                    
    if(ViewState["Text"!= null)
                    
    {
                        
    switch(m_ReturnStyle)
                        
    {
                            
    case ValidateStyle.Session:
                                Context.Session[m_ValidateKey] 
    = ViewState["Text"].ToString();
                                
    break;
                            
    case ValidateStyle.Cookie:
                                Context.Response.Cookies[m_ValidateKey].Value 
    = ViewState["Text"].ToString();
                                
    break;
                            
    case ValidateStyle.Cache:
                                Context.Cache[m_ValidateKey] 
    = ViewState["Text"].ToString();
                                
    break;
                        }

                    }

                }

                
    base.OnUnload (e);
            }


            
    protected override void OnLoad(EventArgs e)
            
    {
                
    string strCode = GetValidateCode();
                ViewState[
    "Text"= strCode;
                
    string cacheid = BuildImage();
                
    if(Page.Request.QueryString["GetValidateNewCode"== this.ClientID)
                
    {
                    Page.Response.Clear();
                    
    if(m_ReturnStyle == ValidateStyle.Client)
                    
    {
                        Page.Response.Write(cacheid 
    + ";" + strCode);
                    }

                    
    else
                    
    {
                        Page.Response.Write(cacheid);
                    }

                    Page.Response.End();
                }

                
    else if(Page.Request.QueryString["GetValidateNewCode"!= null)
                
    {
                    m_xx 
    = true;
                }


                
    if(m_ReturnStyle == ValidateStyle.Client)
                
    {
                    
    this.Attributes.Add("Text"this.Text);
                    
    this.Attributes.Add("value"this.Text.ToLower());
                }

                
    this.Style.Add("cursor""hand");
                
    this.Attributes.Add("onclick""ValidateBox_Change('" + Page.Request.FilePath + "?GetValidateNewCode=" + this.ClientID + "');");
                
    base.OnLoad(e);
            }
  • 相关阅读:
    c#基础问题笔记(一)
    自动化技术中的进给电气传动研习笔记2
    自动化技术中的进给电气传动研习笔记1
    汉字在电脑中是如何存储与编码的呢?
    三十分钟掌握STL
    python练习:函数2
    python练习:函数3
    Creating a ModelForm without either the 'fields' attribute or the 'exclude' attribute is prohibited; form ResumeForm needs updating.
    vue 数组对象取对象的属性: Cannot read property 'xxxx' of undefined
    python练习:函数4
  • 原文地址:https://www.cnblogs.com/faib/p/746704.html
Copyright © 2011-2022 走看看