分享

Ajax

 昵称1794186 2010-07-29
// ajaxSubmit.js
// 用来实现通过无刷新技术提交数据并将返回值更新到页面对象的工作
//-----------------------基础函数---------------------------------
/**
函数 ajaxLoadPage
 通过Msxml2.XMLHTTP对象向服务器发送请求并得到响应数据
 @param url 向服务器发送的Url 格式:servletnane?paramname=paramvalue&......<b>
         不论发送GET请求还是POST请求,此参数都可以被服务器达到
 @param param 此参数只在POST请求时发生作用,内容是需要提交的的参数
           格式:param1_name=param1_value&param2_name=param2_value&......
 @param method 请求方式 GET/POST 必须大写
 @param container 接受接受数据的对象,此对象必须拥有innerHTML属性,此时用异步方式请求数据
                  如果传入""就用同步方式请求数据,并将响应数据返回
 
 
**/
var currobj = null;
var imageSrc="<img src='images/loading.gif'>";
function doGet(url,obj,flag){
 if(!flag){
  flag=false;
 }
 else{
    flag = true;
  }
 var oBao=new ActiveXObject("Msxml2.XMLHTTP");//require Cross-Browser XMLHttpRequest
 oBao.open("GET",url+"&ajaxdate="+new Date(),flag);
 if(flag){
  oBao.onreadystatechange=function(){
   if(oBao.readyState==1){
    obj.innerHTML=imageSrc+"loading...";
   }
   if (oBao.readyState==4){
    obj.innerHTML="";
    obj.innerHTML=oBao.responseText;
   }
  }
  oBao.send();
 }
 else{
  if(obj){
   oBao.send();
   obj.innerHTML="";
   obj.innerHTML=oBao.responseText;
   oBao = null;
  }
  else{
   oBao.send();
   return oBao.responseText;
  }
 }
}
function doPost(url,formobj,obj,flag){
try{
 if(!flag){
    flag=false;
  }
  else{
   flag = true;
  }
 var oBao=new ActiveXObject("Msxml2.XMLHTTP");//require Cross-Browser XMLHttpRequest
 var formsvalue=formToRequestString(formobj);
 formsvalue=encodeURI(formsvalue);
 //alert(formsvalue);
 //return;
 oBao.open("POST",url+"&isAjax=1&ajaxdate="+new Date(),flag);
 oBao.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
 if(flag){
  oBao.onreadystatechange=oBao.onreadystatechange=function(){
   if(oBao.readyState==1){
    obj.innerHTML=imageSrc+"loading...";
   }
   if (oBao.readyState==4){
    obj.innerHTML="";
    obj.innerHTML=oBao.responseText;
   }
  }
  oBao.send(formsvalue);
 }
 else{
  if(obj){
   oBao.send(formsvalue);
   obj.innerHTML="";
   obj.innerHTML=oBao.responseText;
   oBao = null;
  }
  else{
   oBao.send(formsvalue);
   return oBao.responseText;
  }
 }
}
catch(e){
 self.status = e.message;
 return "error";
}
}
function doPostForParam(url,params,obj,flag){
  try{
   if(!flag){
      flag=false;
    }
    else{
      flag = true;
    }
    var oBao=new ActiveXObject("Msxml2.XMLHTTP");//require Cross-Browser XMLHttpRequest
    var formsvalue=params;
    oBao.open("POST",url+"&isAjax=1&ajaxdate="+new Date(),flag);
    oBao.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
    if(flag){
      oBao.onreadystatechange=oBao.onreadystatechange=function(){
        if(oBao.readyState==1){
          obj.innerHTML=imageSrc+"loading...";
        }
        if (oBao.readyState==4){
          obj.innerHTML="";
          obj.innerHTML=oBao.responseText;
        }
      }
      oBao.send(formsvalue);
    }
    else{
      if(obj){
        oBao.send(formsvalue);
        obj.innerHTML="";
        obj.innerHTML=oBao.responseText;
        oBao = null;
      }
      else{
        oBao.send(formsvalue);
        var str = oBao.responseText;
        return str;
      }
    }
  }
  catch(e){
    self.status = e.message;
    return "error";
  }
}
/**
函数 formToRequestString(form_obj)
 将form对象中的数据组织成键值对,便于通过Msxml2.XMLHTTP对象发送
 @param form_obj 需要提交的form对象
 @return 组织好的键值对字符串,在组织数据时对值进行了escape编码,在末尾会加上ajax=1的参数,帮助服务识别是否通过ajax方式
   涮新
*/
function formToRequestString(form_obj)
{
 var query_string='';
 var and='';
 for (i=0;form_obj&&i<form_obj.length ;i++ )
 {
  e=form_obj[i];
  if(e.type=="button"){
   continue;
  }
  element_value="";
  if (e.name!=''&&!e.disabled)
  {
   if (e.type=='select-one')
   {
    if(e.options.length>0){
     if(e.selectedIndex>-1){
      element_value=e.options[e.selectedIndex].value;
     }
    }
   }
   else if (e.type=='checkbox' || e.type=='radio')
   {
    
    if (e.checked==true)
    { 
     element_value=e.value; 
    }
    
   }
   else
   {
    element_value=e.value;
   }
   if(element_value!=""){
    query_string+=and+e.name+'='+escape(element_value);
    query_string = query_string.replace(/\+/g,"%2b");
    //alert(element_value);
    and="&";
   }
  }
 }
 //alert(query_string);
 return query_string;
}
function writeFile(filestr,filename){
 var fso = new ActiveXObject("Scripting.FileSystemObject");
 var file=fso.CreateTextFile(filename, true);
 file.WriteLine(filestr);
 file.Close();
}
function doExtGet(urlstr,obj,funcobj){
 var loadid=Ext.Ajax.request({
  url:urlstr,
  method: 'GET',
  success:function(result, request){
   obj.innerHTML=result.responseText;
   if(funcobj!=null){
    funcobj();
   }
  },
  failure: function(result, request){
   obj.innerHTML="加载失败!";
  }
 });
 if(Ext.Ajax.isLoading(loadid)){
  obj.innerHTML=imageSrc;
 }
}
function doExtPost(urlstr,formobj,obj,funcobj){
 var loadid=Ext.Ajax.request({
  url:urlstr,
  method: 'POST',
  form:formobj,
  success:function(result, request){
   obj.innerHTML=result.responseText;
   if(funcobj!=null){
    funcobj();
   }
  },
  failure: function(result, request){
   obj.innerHTML="加载失败!";
  }
 });
 if(Ext.Ajax.isLoading(loadid)){
  obj.innerHTML=imageSrc;
 }
}
/**
 * 使用Ajax技术保存数据,显示数据处理过程进度框,调用保存方法
 * @param loadDo 保存数据的方法 此参数必有
 */
function showLoad(loadDo){
 if(loadDo==null||loadDo==undefined||loadDo==""){
  return;
 }/*
 var divobj= null;
 if(!infoDiv){
  infoDiv = document.createElement("<div id='infoDiv'></div>");
  document.body.insertBefore(infoDiv);
  divobj=document.createElement("<div id='dealWithdivobj'></div>");
  infoDiv.insertBefore(divobj);
 }
 else{
  infoDiv = document.getElementById("infoDiv");
  divobj = document.getElementById("dealWithdivobj");
 }
 if(!infoDiagnose){
  infoDiagnose = new Ext.Window({
    contentEl: infoDiv,
      height: 130,
      width: 300,
      title:"信息框",
      minHeight: 100,
      minWidth: 150,
      autoCreate:true,
      closable:false,
      modal: true,
      proxyDrag: true,
      shadow: true,
      layout:"fit",
      items: [{
            contentEl: "dealWithdivobj"
        }]
  });
 }
 divobj.innerHTML="<table height='100%' width='98%'><tr><td align='center' height='100%'>"
  +imageSrc+"数据处理中,请稍候!</td></tr></table>";
 hiddenObj(document,'hidden');
 infoDiagnose.show();*/
 var htmlstr="<table height='100%' width='98%'><tr><td align='center' height='100%'>"
    +imageSrc+"数据处理中,请稍候!</td></tr></table>";
   
  showLayerForHtml("showLoadLayer",htmlstr,"信息框",300,130,true);
 window.setTimeout(loadDo,1);
}
/**
 * 使用Ajax技术保存数据失败后调用的函数
 * @param error 出错信息,可选参数
 */
function errorInfo(error){
 //var divobj = document.getElementById("dealWithdivobj");
 if(error==null){
  error="数据处理出错,请将输入信息另存后,重新执行操作,如果操作不能完成,请联系系统管理员!";
 }
 var str ="<table height='100%' width='98%'><tr><td align='left' height='100%'>"
  +error+"</td></tr><tr><td align='center' height='30'>"
  +"<input type='button' name='btnErrorClose' value='关 闭' class='f' onclick='closeLayer(\"showLoadLayer\");'></td></tr></table>";
 showLayerForHtml("showLoadLayer",str,"信息框",300,130,true);
}
/**
 * 使用Ajax技术保存数据成功后调用的函数
 * @param str 成功信息
 * @param fndo 保存成功后应该调用的功能
 */
function doSuccess(str,fndo){
 //var divobj = document.getElementById("dealWithdivobj");
 if(!str){
  str="操作成功!";
 }
 var htmlstr="<table height='100%' width='98%'><tr><td align='center' height='100%'><font size='4'>"
    + str +"</font></td></tr>"
    +"</table>";
  showLayerForHtml("showLoadLayer",htmlstr,"信息框",300,130,true);
 window.setTimeout("closeLayer('showLoadLayer');"+(fndo==null?"":";"+fndo+";"),50);
}
/**
 * 隐藏保存过程显示框
 */
function hideLoad(){
 //hiddenObj(document,'visible');
 //infoDiagnose.hide();
}
function saveDatainfo(){
 var str = "";
 try{
  str = document.all.editdiv.outerHTML;
 }
 catch(e){
  try{
   str = document.all.mycontrol.GetDocContent("getalldoctext");
   str=str.replace(/\r/g,"<br>");
  }
  catch(e1){}
 }
 writeFile(str,"c:\\htcom\\errorInfo.html");
}
function loadDateinfo(){
 var fso = new ActiveXObject("Scripting.FileSystemObject");
 var file=fso.OpenTextFile("c:\\htcom\\errorInfo.html",1,true);
 var filestr="";
 var temp=null;
 try{
  while((temp=file.ReadLine())!=null){
   filestr+=temp+"\n";
  }
  file.Close();
 }
 catch(e){
  file.Close();
 }
 return filestr;
}
/**
 * 校验日期字符串格式是否为yyyy-MM-dd
 * @param dateStr 校验的日期字符串
 */
function isAValidDate(dateStr) {
 var datePat = /^(\d{4})-(\d{2})-(\d{2})$/;
 var matchArray = dateStr.match(datePat); // is the format ok?
 if (matchArray == null) {
  return false;
 }
 month = matchArray[2]; // parse date into variables
 day = matchArray[3];
 year = matchArray[1];
 if (month < 1 || month > 12) { // check month range
  return false;
 }
 if (day < 1 || day > 31) {
  return false;
 }
 if ((month==4 || month==6 || month==9 || month==11) && day==31) {
  return false;
 }
 if (month == 2) { // check for february 29th
  var isleap = (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0));
  if (day>29 || (day==29 && !isleap)) {
   return false;
   }
 }
 return true;
}
function fastSearchShow(url,obj){
  if(!obj){
    obj = event.srcElement;
  }
  if(obj){
    var divObj = document.getElementById("Fast_Search_Div");
    if(!divObj){
      divObj = document.createElement("div");
      divObj.id = "Fast_Search_Div";
      divObj.className="area_div_border";
      divObj.style.position="absolute";
      divObj.style.width="500px";
      divObj.style.height="200px";
      divObj.style.zIndex=100000000;
      document.body.insertBefore(divObj);
      divObj.innerHTML="";
      if(url){
        doGet(url,divObj,false);
      }
    }
    divObj.relationId=obj.id;
    var left = event.srcElement.offsetLeft;//(document.body.offsetWidth-500)/2;
    var top = event.srcElement.offsetTop;//(document.body.offsetHeight-400)/2;
    divObj.style.posLeft=document.body.offsetWidth-510;
    divObj.style.posTop =document.body.offsetHeight-240;      
    focusObj(document.all.searchId);
  }
}
function fastSearchHide(){
  var divObj = document.getElementById("Fast_Search_Div");
  if(divObj){
    divObj.style.posLeft=-1000;
    divObj.style.posTop=-1000;
    var relobj = document.getElementById(divObj.relationId);
    if(relobj){
      relobj.focus();
    }
  }
}
function fastSearchWrite(str){
  var divObj = document.getElementById("Fast_Search_Div");
  if(divObj){
    var relobj = document.getElementById(divObj.relationId);
    if(relobj&&relobj.value){
      relobj.value+=str;
    }
  }
}
function doInputFloat(obj){
  if(obj){
    obj.onkeydown=function(){
      var keycode = window.event.keyCode;
      if(!window.event.shiftKey&&((keycode>=48&&keycode<=57)||(keycode>=96&&keycode<=105)||keycode==190)){
       if(keycode==190){
          if(this.value.indexOf(".")>0){
            window.event.keyCode=0;
            return false;
          }
          else if(this.value==""){
            this.value="0";
          }
        }
      }
      else{
       if(keycode<8||keycode>=46){
          window.event.keyCode=0;
          return false;
       }
      }
    }
  }
}
function doInputInt(obj){
  if(obj){
    obj.onkeydown=function(){
      var keycode = window.event.keyCode;
      if(!window.event.shiftKey&&((keycode>=48&&keycode<=57)||(keycode>=96&&keycode<=105))){
      }
      else{
        if(keycode<8||keycode>46){
          window.event.keyCode=0;
          return false;
        }
      }
    }
  }
}

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约