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;
}
}

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

  1. 【转】第6篇:Xilium CefGlue 关于 CLR Object 与 JS 交互类库封装报告:自动注册JS脚本+自动反射方法分析

    作者: 牛A与牛C之间 时间: 2013-11-21 分类: 技术文章 | 暂无评论 | 编辑文章 主页 » 技术文章 » 第6篇:Xilium CefGlue 关于 CLR Object 与 JS ...

  2. 【转】第5篇:Xilium CefGlue 关于 CLR Object 与 JS 交互类库封装报告:自动注册JS脚本+委托回调方法分析

    作者: 牛A与牛C之间 时间: 2013-11-19 分类: 技术文章 | 暂无评论 | 编辑文章 主页 » 技术文章 » 第5篇:Xilium CefGlue 关于 CLR Object 与 JS ...

  3. 封装一个自己的 Ajax小框架

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

  4. 第一百六十节,封装库--JavaScript,ajax注册表单到数据库

    封装库--JavaScript,ajax注册表单到数据库 效果图 前台js var biaodan = $().xu_lie_biao_dan($('form').sh_jd()); //序列化获取表 ...

  5. 第一百五十八节,封装库--JavaScript,ajax说明

    封装库--JavaScript,ajax说明 封装库ajax()方法,ajax通讯方法,跨页面向动态页面发送或获取数据 /** ajax()方法,ajax通讯方法,跨页面向动态页面发送或获取数据 * ...

  6. Atitit java方法引用(Method References) 与c#委托与脚本语言js的函数指针

    Atitit java方法引用(Method References) 与c#委托与脚本语言js的函数指针   1.1. java方法引用(Method References) 与c#委托与脚本语言js ...

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

    文件上传漏洞演示脚本之js验证 0 0       716   关于文件上传漏洞,想必玩web安全的同学们都有接触,之前本站也发布过一篇文章介绍文件上传漏洞的各种绕过方法,但是只是有文档却没有演示代码 ...

  8. ajax+js数据模板+后台

    .net 后台,ajax+js模板引擎的数据填充,制作无刷新分页 js模板用laytpl 待续...

  9. JS高级---案例贪吃蛇,把封装的函数移动到js文件中

    案例贪吃蛇,把封装的函数移动到js文件中 <!DOCTYPE html> <html lang="en"> <head> <meta ch ...

随机推荐

  1. css3玩转各种效果【资源】

    css3玩转各种按钮效果[资源] 点击下载 css3各种拐弯箭头-包括循环旋转 点击下载 不定期更新,下班了……

  2. Linux rsync数据定时增量备份

    一.安装rsync服务端 1.查看是否安装rsync ps -ef | grep rsync 系统一般默认已安装,安装方法: yum -y install rsync 2.添加配置文件 rsync没有 ...

  3. 决策树:ID3与C4.5算法

    1.基本概念 1)定义: 决策树是一个预测模型:他代表的是对象属性与对象值之间的一种映射关系,树中每个节点代表的某个可能的属性值. 2)表示方法: 通过把实例从根结点排列到某个叶子结点来分类实例,叶子 ...

  4. vue组件scoped CSS及/deep/深度选择器

    参考链接:https://vue-loader.vuejs.org/zh/guide/scoped-css.html#%E5%AD%90%E7%BB%84%E4%BB%B6%E7%9A%84%E6%A ...

  5. spring面试题 对DI , AOP概念的理解

    1.降低了组件之间的耦合性 ,实现了软件各层之间的解耦 2.可以使用容易提供的众多服务,如事务管理,消息服务等 3.容器提供单例模式支持 4.容器提供了AOP技术,利用它很容易实现如权限拦截,运行期监 ...

  6. BZOJ 1433 [ZJOI2009]假期的宿舍(网络流)

    [题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=1433 [题目大意] 在校学生有自己的床,外校的则没有,如果两个同学相互认识,则可以借用 ...

  7. bzoj 3140: [Hnoi2013]消毒

    3140: [Hnoi2013]消毒 Description 最近在生物实验室工作的小T遇到了大麻烦. 由于实验室最近升级的缘故,他的分格实验皿是一个长方体,其尺寸为a*b*c,a.b.c 均为正整数 ...

  8. lightoj 1052 - String Growth & uva 12045 - Fun with Strings 矩阵

    思路:很容易发现规律,数列和Fib数列一样的. 记开始的时候啊a的个数为Y,b的个数为X.建立矩阵. 代码如下: #include<iostream> #include<cstdio ...

  9. Spring注解@Primary的意思

    @Primary:在众多相同的Bean中,优先使用@Primary注解的Bean. 这个和@Qualifier有点区别,@Qualifier指的是使用哪个Bean进行注入. 参考: http://bl ...

  10. [典型漏洞分享]结合YS业务分析使用oauth协议的风险

    结合YS业务分析oauth协议风险 问题描述: YS 使用QQ互联的openAPI实现QQ登录YS的功能,使用该功能需要在腾讯注册登录时的回调地址,根据oauth协议,用户的code或者access_ ...