• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    Ajax异步(请求)提交类 支持跨域
    复制代码 代码如下:

    /**//*
    异步请求类

    作者:吾非无心
    创建时间:2009.2
    ---------------------------------------------------------------------------------------------------------------------------------

    修改记录:

    2009.4.27——添加 URL 检测功能,如果是“http://xxxx.xxx.xx.xx/..”这样的格式,使用系统提供的“/getUrl.aspx”进行获取
    以解决跨域问题。
    getUrl.aspx 的主要参数有两个:1、url 值为目标URL(URL中可以带参数)——必须;2、method 值为代理使用的方法(可选)
    如果method为空,默认采用POST方法进行代理;如果FORM参数为空(即request.content-length=0),则自动设置为GET方法;
    (注:getUrl.aspx在2009.4.27重新进行了设计,在原完成代理的基础上,新增了Cookie代理)
    */
    function IsOuterURL(str_url){
    var strRegex = "((https|http)://)([\\w-]+\\.)+[\\w-]+.([^a-z])(/[\\w-./?%=]*)?|((https|http)://)[a-zA-Z0-9\\-\\.][\\w-]+.([^a-z])(/[\\w-./?%=]*)?";
    var re=new RegExp(strRegex);

    if (re.test(str_url)){
    return (true);
    }else{
    return (false);
    }
    }
    var LeesAjaxRequest=
    {
    list:[],
    m_LeesAjaxHttpRequest:null,
    isWorking:false,
    getUrl:function(method,url,params,successFun,FailureFun,headers)
    {
    if(url.length1)
    return;
    if(this.m_LeesAjaxHttpRequest==null)
    {
    if (typeof XMLHttpRequest != 'undefined')
    {
    this.m_LeesAjaxHttpRequest = new XMLHttpRequest();
    }
    else if (typeof ActiveXObject != 'undefined')
    {
    this.m_LeesAjaxHttpRequest = new ActiveXObject('Microsoft.XMLHTTP');
    }

    }
    if (this.m_LeesAjaxHttpRequest)
    {
    if(this.isWorking)
    {
    this.list[this.list.length]={method:method,url:url,params:params,successFun:successFun,failureFun:FailureFun,headers:headers};
    }
    else
    {
    this.isWorking=true;
    if(IsOuterURL(url))
    this.m_LeesAjaxHttpRequest.open(method, "/geturl.aspx?url="+escape(url)+"method="+method, true);//true为异步
    else
    this.m_LeesAjaxHttpRequest.open(method, url, true);//true为异步
    var _this=this;
    this.m_LeesAjaxHttpRequest.onreadystatechange=function()
    {
    if(4==_this.m_LeesAjaxHttpRequest.readyState)
    {
    if(200==_this.m_LeesAjaxHttpRequest.status)
    {
    if(successFun)
    {
    try{
    successFun(_this.m_LeesAjaxHttpRequest);
    }
    catch(ex)
    {}
    }
    }
    else
    {
    if(FailureFun)
    {
    try{
    FailureFun(_this.m_LeesAjaxHttpRequest);
    }
    catch(ex)
    {}
    }
    }
    _this.isWorking=false;
    if(_this.list.length>0)
    {
    var o=_this.list[0];
    _this.list.splice(0,1);
    _this.getUrl(o.method,o.url,o.params,o.successFun,o.failureFun,o.headers);
    }
    }
    };
    var vPara="";
    if(typeof params=="string")
    {
    vPara=escape(params);
    }
    else if(params)
    {
    try
    {
    for(var e in params)
    {
    if(vPara.length1)
    vPara=e+"="+escape(params[e]);
    else
    vPara+=""+e+"="+escape(params[e]);
    }
    }
    catch(ex)
    {}
    }
    if(headers)
    {
    try
    {
    for(var h in headers)
    {
    this.m_LeesAjaxHttpRequest.setRequestHeader(h.replace("_","-"),headers[h]);
    }
    }
    catch(ex)
    {
    }
    }
    this.m_LeesAjaxHttpRequest.send(vPara);
    }
    }
    },
    Post:function(o)
    {
    var vMethod=o.method||"post";
    var vUrl=o.url||null;
    var vParams=o.params||"";
    var vSuccess=o.success||null;
    var vFailure=o.failure||null;
    var vHeaders=o.headers||null;
    if(vUrl==null||vUrl.length1)
    {
    //alert("异步请求格式错误");
    return;
    }
    this.getUrl(vMethod,vUrl,vParams,vSuccess,vFailure,vHeaders);
    },
    Get:function(o)
    {
    var vMethod=o.method||"get";
    var vUrl=o.url||null;
    var vParams=o.params||"";
    var vSuccess=o.success||null;
    var vFailure=o.failure||null;
    var vHeaders=o.headers||null;
    if(vUrl==null||vUrl.length1)
    {
    //alert("异步请求格式错误");
    return;
    }
    this.getUrl(vMethod,vUrl,vParams,vSuccess,vFailure,vHeaders);
    }
    }
    /**//*异步请求类 END*/


    使用示例:
    复制代码 代码如下:

    1.//动态装载JS文件
    if(vJS vJS.length>3)
    {
    if(!_this.loadedJS.isInArray(vJS))
    {
    _this.loadedJS[_this.loadedJS.length]=vJS;
    LeesAjaxRequest.Get({
    url:vJS,
    success:function(ojs){
    var jsOBJ=document.createElement("script");
    jsOBJ.text=ojs.responseText;
    document.documentElement.appendChild(jsOBJ);
    },//end success
    headers:{Content_Type:"application/x-javascript"}
    });//end Get
    }//end if ( !_this.loadedJS.isInArray(vJS))
    }//end if(vJS vJS.length>3)

    2 .//添加到工具提示竖条上
    LeesAjaxRequest.Post({url:"/getToolTip.aspx",
    params:{tooltip:title},
    headers:{Content_Type:"application/x-www-form-urlencoded;charset=utf-8"},//如果使用Post方法,必须传入此参数,charset可以为别的
    success:function(o){
    var rObj=eval("("+o.responseText+")");
    var tObj=new LeesBaseWindow(rObj["width"]+2,rObj["height"]+1,"","","","","",1,"");
    tObj.ShowWindow(vToolBarSlider.window);
    tObj.contentWindow.style.backgroundImage="url("+rObj["image"]+")";
    tObj.contentWindow.style.marginLeft="1px";
    tObj.contentWindow.style.backgroundRepeat="no-repeat";
    tObj.contentWindow.style.backgroundPosition="0 0";
    tObj.contentWindow.onmouseover=function(){
    this.style.backgroundPosition="0 -"+rObj.height;
    _this.setShowWindow(obj);
    }
    tObj.contentWindow.onmouseout=function(){
    this.style.backgroundPosition="0 0";
    }
    },
    failure:function(){
    alert("生成ToolTip时出错");
    }
    });
    您可能感兴趣的文章:
    • JS Ajax请求如何防止重复提交
    • .NET的Ajax请求数据提交实例
    • AJAX避免用户重复提交请求实现方案
    • 按钮的Ajax请求时一次点击两次提交的解决方法
    上一篇:四步学会 Ajax
    下一篇:Ajax案例集下载:新增分页查询案例(包括《Ajax开发精要》中的两个综合案例) 下载
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    Ajax异步(请求)提交类 支持跨域 Ajax,异步,请求,提交,类,