您的位置:首页 > Web前端 > JavaScript

封装自用的脚本ajax.js

2014-11-22 11:13 176 查看
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;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: