www.gusucode.com > ShopEx481 & PHPWind 整合版码程序 > bbs/js/pw_ajax.js
function AjaxObj(){ this.responseText = null; var s = document.createElement('div'); s.style.display = 'none'; s.innerHTML = '<iframe id="ajaxiframe" name="ajaxiframe" width="0" height="0"></iframe>'; document.body.appendChild(s); this.iframe = s.firstChild; this.post = function(url,data){ if(typeof data == 'string' && data!=''){ var f = document.createElement('form'); f.name = 'ajaxform'; f.target = 'ajaxiframe'; f.method = 'post'; f.action = url; var ds = data.split("&"); for(var i=0;i<ds.length;i++){ if(ds[i]){ var v = ds[i]; var el = document.createElement('input'); el.type = 'hidden'; el.name = v.substr(0,v.indexOf('=')); el.value = v.substr(v.indexOf('=')+1); f.appendChild(el); } } document.body.appendChild(f); f.submit(); document.body.removeChild(f); } else if(typeof data == 'object'){ data.target = 'ajaxiframe'; data.submit(); } else{ self.ajaxiframe.location = url; } } } function XMLhttp(){ this.request = null; this.recall = null; this.time = null; this.t = null; this.last = 0; } XMLhttp.prototype = { send : function(url,data,callback){ if(this.request == null){ this.request = new AjaxObj(); } this.request.responseText = ''; var nowtime = new Date().getTime(); if(nowtime-this.last<1500){ clearTimeout(this.t); this.t = setTimeout(function(){ajax.send(url,data,callback)},1500+this.last-nowtime); return; } this.last = nowtime; url += (url.indexOf("?") >= 0) ? "&nowtime=" + nowtime : "?nowtime=" + nowtime; this.request.post(url,data); this.recall = callback; if(typeof this.recall == "function"){ if(this.request.iframe.attachEvent){ this.request.iframe.detachEvent('onload',ajax.load); this.request.iframe.attachEvent('onload',ajax.load); } else{ this.request.iframe.addEventListener('load',ajax.load,true); } } }, load : function(){ if(is_ie){ ajax.request.responseText = ajax.request.iframe.contentWindow.document.XMLDocument.text; ajax.request.iframe.detachEvent('onload',ajax.load); } else{ ajax.request.responseText = ajax.request.iframe.contentWindow.document.documentElement.firstChild.nodeValue; ajax.request.iframe.removeEventListener('load',ajax.load,true); } ajax.recall(); }, XmlDocument : function(obj){ return is_ie ? ajax.request.iframe.contentWindow.document.XMLDocument : ajax.request.iframe.contentWindow.document; }, submit : function(obj,recall){ if(typeof recall == 'undefined' || typeof recall != 'function'){ recall = ajax.guide; } ajax.send(obj.action,obj,recall); closep(); }, get : function(){ if(ajax.request.responseText.indexOf('<') != -1){ read.menu.innerHTML = ajax.request.responseText; read.menu.className = 'menu'; read.menupz(read.obj,1); } else{ closep(); ajax.guide(); } }, guide : function(){ var rText = ajax.request.responseText.split('\t'); var o = ajax.create(); o.innerHTML = rText[0]; o.style.top = (ietruebody().scrollTop + 170) + 'px'; o.style.left = (ietruebody().clientWidth - o.offsetWidth)/2 + ietruebody().scrollLeft + 'px'; ajax.time = setTimeout("ajax.clear();",3000); if(typeof(rText[1]) != 'undefined' && in_array(rText[1],['jump','nextto','reload'])){ if(rText[1]=='jump'){ setTimeout("window.location.href='"+rText[2]+"';",200); } else if(rText[1]=='nextto'){ sendmsg(rText[2],rText[3],rText[4]); } else if(rText[1]=='reload'){ setTimeout("window.location.reload();",200); } } }, clear : function(){ if(IsElement('ajax_guide')) document.body.removeChild(getObj('ajax_guide')); }, create : function(){ if(!IsElement('ajax_guide')){ var o = document.createElement('div'); o.style.cssText = 'border:#EFEF9D 1px solid;background:url('+imgpath+'/important.gif) no-repeat .5em center #FFFFD8;font:bold 14px Helvetica;text-align:center;padding:1em 1.5em 1em 4.5em;position:absolute;z-index:3005;'; o.id = 'ajax_guide'; document.body.appendChild(o); } else{ clearTimeout(ajax.time); var o = getObj('ajax_guide'); } return o; }, convert : function(str){ return str.replace(/\&/g,'%26'); }, quickpost : function(event,obj){ if((event.ctrlKey && event.keyCode == 13) || (event.altKey && event.keyCode == 83)){ try{obj.ajaxsubmit.click();}catch(e){} } } } var ajax = new XMLhttp(); function sendmsg(url,data,id){ read.obj = typeof id == 'undefined' ? null : getObj(id); read.guide(); setTimeout(function(){ajax.send(url,data,ajax.get);},300); }