封装自用的脚本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(.|\n)*?>(.|\n|\r\n)*?<\/script>/ig;
    var jsContained = html.match(regDetectJs);

    if(jsContained) {
        // 分段取出js正则
        var regGetJS = /<script(.|\n)*?>((.|\n|\r\n)*)?<\/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;
    }
}
时间: 2024-10-14 02:36:22

封装自用的脚本ajax.js的相关文章

封装一个自己的 Ajax小框架

框架代码如下: // 使用封装方法的人只关心提供http的请求方法,url地址,数据,成功和失败的回调方法 // 类的构造定义,主要职责就是新建出 XMLHttpRequest 对象 var MyXMLHttpRequest = function () { var xmlhttprequest; if (window.XMLHttpRequest) { xmlhttprequest = new XMLHttpRequest(); if (xmlhttprequest.overrideMimeTy

对rsync进行封装的shell脚本

抓取 #!/bin/bash . push.sh # 错误处理:尝试查找备份文件 function onError() { local errFile="err" local serverInfo=($1 $2 $3) # ip username password local logInfo=($4 $5) # srcPath destPath local srcPath=${logInfo[0]} logInfo[0]="disk1/"${srcPath##*/}

CSS3无前缀脚本prefixfree.js与Animatable使用

现代浏览器基本支持CSS3,但是一些旧版本的浏览器还是需要添加前缀的.像box-shadow, border-radius这类属性,目前较新版本的浏览器都是不需要前缀的(包括IE9),但是,有些CSS3属性,例如渐变,前缀少不了,每次都需要像盖高楼一样堆叠CSS3代码,如下图: .bg { width:400px; height:177px; margin:70px auto 0; padding-top:73px; position:relative; background-image:-we

文件上传漏洞演示脚本之js验证

文件上传漏洞演示脚本之js验证 0 0 716 关于文件上传漏洞,想必玩web安全的同学们都有接触,之前本站也发布过一篇文章介绍文件上传漏洞的各种绕过方法,但是只是有文档却没有演示代码,最近给公司一客户培训,就照文档中的绕过写出了相应的代码,方便我等小菜研究,此次的文章我会连续发几天都是关于如何绕过的,全都是科普文,很简单的,希望小伙伴们喜欢. 关于文件上传漏洞的文章 绕过文件上传验证 为什么文件上传表单是主要的安全威胁 js验证绕过演示代码 01 <?php 02 /** 03  * Crea

封装自定义验证方法-validate-methods.js

$(function(){ // 判断整数value是否等于0 jQuery.validator.addMethod("isIntEqZero", function(value, element) { value=parseInt(value); return this.optional(element) || value==0; }, "整数必须为0"); // 判断整数value是否大于0 jQuery.validator.addMethod("isI

Unity中CS脚本于JS脚本交互

这里需要注意的是被调用的脚本必须放在 "Standard Assets". "Pro Standard Assets" 和"Plugins" 这三个文件夹中的任何一个里,而调用它的脚本不能在一个目录文件夹中,否则无法编译通过,原因是Unity会最先编译这三个文件夹,"Editor"目录里的脚本稍后编译,其他的脚本最后编译(既 CS调用JS,CS脚本放在其他文件家中,JS脚本要放在 如上三个文件夹中先编译:JS调用CS,JS脚本

80 脚本引擎——js脚本引擎

脚本引擎管理工具 java提供了一个脚本引擎管理工具,从这个工具可以获得各种脚本语言的脚本引擎,如js.python等.我们可以通过脚本引擎,来调用已经写好的脚本文件.相当的方便. 我们可以使用:new ScriptEngineManager()获取一个脚本引擎管理工具对象. 然后,可以通过getEngineByName(scriptName)的方式得到我们想要的脚本引擎. //获取脚本引擎管理器 ScriptEngineManager sem = new ScriptEngineManager

常用 ajax js 表单

$(function () { /** * 图片点击放大处理 */ $('.mini_img').click(function () { $(this).hide().next().show(); }); $('.img_info img').click(function () { $(this).parents('.img_tool').hide().prev().show(); }); $('.packup').click(function () { $(this).parent().par

前端Ajax/JS/HTML+后端SpringMVC(一)

1.JSON 1.1. 转发或重定向的不足 对于发出的请求,最终需要给出"成功/失败"的结果的话,转发的方式来处理,给用户的体验就非常不好!即使用户填错了一项数据不达标,都需要回退至此前的页面重新填写,而原本填写的其它数据可能需要再填写一次! 并且,当用户发出请求后,如果是转发或者重定向,一定会发生页面的跳转!无法在页面中局部来提示信息. 从服务端的角度出来,其实,还存在浪费流量的问题!如果只是为了表达"成功/失败",也许只需要1个"1/0"就可