zoukankan      html  css  js  c++  java
  • 封装自用的脚本ajax.js

    function createxmlhttp()
    {
        xmlhttpobj = false;
        try{//创建对象,一个一个的试,哎,要是能统一标准都好。。
            xmlhttpobj = new XMLHttpRequest;
        }catch(e){
            try{
                xmlhttpobj=new ActiveXObject("MSXML2.XMLHTTP");
            }catch(e2){
                try{
                    xmlhttpobj=new ActiveXObject("Microsoft.XMLHTTP");
                }catch(e3){
                    xmlhttpobj = false;
                }
            }
        }
        return xmlhttpobj; 
    }
    
    
    //执行Ajax返回HTML中的JavaScript脚本3
    function executeScript_3(html) {
        var regDetectJs = /<script(.|
    )*?>(.|
    |
    )*?</script>/ig;
        var jsContained = html.match(regDetectJs);
    
        if(jsContained) {
            // 分段取出js正则
            var regGetJS = /<script(.|
    )*?>((.|
    |
    )*)?</script>/im;
    
            // 按顺序分段执行js
            var jsNums = jsContained.length;
            for (var i=0; i<jsNums; i++) {
                var jsSection = jsContained[i].match(regGetJS);
    
                if(jsSection[2]) {
                    if(window.execScript) {
                        // 给IE的特殊待遇
                        window.execScript(jsSection[2]);
                    } else {
                        // 给其他大部分浏览器用的
                        window.eval(jsSection[2]);
                    }
                }
            }
        }
    }
    
    
    function getsubcategory(url_str,show_id){
    
        //显示Loading提示信息
        show_load_div(1);
    
        if (show_id == 'main_content')
        {
            //如果输出ID为main_content,则将url_str写入到cookies,方面页面F5刷新或者跳转
            //getsubcategory_2('menu_cookies.asp?url_str='+escape(url_str),'menu_cookies_temp');
        }
    
        if (document.getElementById('url_span')){
            url_head = window.location.protocol + '//' + window.location.host + '/';
            if(url_str.indexOf("http") > -1 ) url_head = '';
            var Cts = url_str;
            if(Cts.indexOf("ajax_url=0") < 0 )    //如果地址参数中不包含ajax_url=0,则更新AJAX地址。
            {
                document.getElementById('url_span').innerHTML=url_head + url_str + '&load=iframe';
            }
        }
    
        if(url_str==""){
            document.getElementById(show_id).innerHTML="文件AJAX.JS / 函数function getsubcategory / 参数url_str有误";
            show_load_div(0);
            return;
        }
        var xmlhttpobj = createxmlhttp();
        if(xmlhttpobj){//如果创建对象xmlhttpobj成功
    
            //组成最终url
            if (url_str.indexOf("?") > -1)
            {
                ajax_url = url_str+"&load=ajax&rnd_number="+Math.random();
            } else {
                ajax_url = url_str+"?load=ajax&rnd_number="+Math.random();
            }
    
            xmlhttpobj.open('get',ajax_url,true);//get方法 加个随机数。
            xmlhttpobj.send(null);
            xmlhttpobj.onreadystatechange=function(){//客户端监控函数
    
            //加载等待提示信息
            load_str = ""
    
                if(xmlhttpobj.readyState==4){//服务器处理请求完成
                //干她娘的firefox浏览器,上面的readyState中的S必须大写,否则在firefox中不起作用,干她老母,这也区分大小写!
                    if(xmlhttpobj.status==200){
                        //清空原始容器中的内容
                        if (document.getElementById(show_id))
                        {
                            document.getElementById(show_id).innerHTML='';
    
                            var html = xmlhttpobj.responseText;//获得返回值
                            document.getElementById(show_id).innerHTML=html;
                        }
    
                        //隐藏loading信息
                        show_load_div(0);
    
                        //if(myBrowser()=="FF" || myBrowser()=="Safari" || myBrowser()=="Opera")
                        if(!is_IE_Browser())
                        {
                            //executeScript_1(html);
                            //executeScript_2(html);
                            executeScript_3(html);
                        }
                    }else{
                        //隐藏loading信息
                        show_load_div(0);
                        document.getElementById(show_id).innerHTML='对不起,数据请求错误(<a href="'+ajax_url+'" target="_blank">'+ajax_url+'</a>)...';
                    }
                }else{
    
                    //document.getElementById(show_id).innerHTML=load_str;//服务器处理中
                    show_load_div(1);
                }
            }    
        }
    }
    
    
    //正在载入中
    function show_load_div(str_s) {
        if (document.getElementById('loading_div'))
        {
    
            if (str_s==1)
            {
                document.getElementById('loading_div').style.display = '';
            } else {
                document.getElementById('loading_div').style.display = 'none';
            }
    
        }
    }
    
    
    
    //检测是否IE浏览器
    function is_IE_Browser() {
        var userAgent = navigator.userAgent; //取得浏览器的userAgent字符串
        var isOpera = userAgent.indexOf("Opera") > -1; //判断是否Opera浏览器
        var isIE = userAgent.indexOf("compatible") > -1 && userAgent.indexOf("MSIE") > -1 && !isOpera ; //判断是否IE浏览器 
        if(isIE) {
            return true;
        } else {
            return false;
        }
    }
  • 相关阅读:
    常用排序算法(快速排序,冒泡排序,最大公约数,Fibonacci )【原创】
    Sql之left_join、right_join、inner_join的解释
    Effective C# 学习笔记(九) 在你的API中避免使用类型转换运算
    Effective C# 学习笔记(十) 用可选参数尽量减少方法重载
    NHibernate学习笔记(5)—正向与反向生成
    NHibernate学习(7)—对于实现机理的猜测
    Effective C# 学习笔记(一) 用属性替代公有变量
    Effective C# 学习笔记(十一)尽量缩减函数体的大小,提高运行效率
    我的学习之路
    NHibernate学习笔记(4)—使用存储过程
  • 原文地址:https://www.cnblogs.com/yeminglong/p/4114886.html
Copyright © 2011-2022 走看看