沧桑雨迢迢 23 : 54 : 11 $createDelegate = function (instance, method) ... { return function() ...{ return method.apply(instance, arguments); }} if ( ! window.XMLHttpRequest) ... { ///<summary>跨浏览器的XMLHttpRequest</summary> window.XMLHttpRequest = function()...{ var progIDs = ['Msxml2.XMLHTTP','Microsoft.XMLHTTP']; for(var i=0; i<progIDs.length; i++)...{ try...{ var xmlHttp = new ActiveXObject(progIDs[i]); return xmlHttp; }catch(ex)...{ } } return null; }} window.XMLDOM = function window$XMLDOM(markup) ... { if (!window.DOMParser) ...{ var progIDs = [ 'Msxml2.DOMDocument.3.0', 'Msxml2.DOMDocument' ]; for (var i = 0; i < progIDs.length; i++) ...{ try ...{ var xmlDOM = new ActiveXObject(progIDs[i]); xmlDOM.async = false; xmlDOM.loadXML(markup); xmlDOM.setProperty('SelectionLanguage', 'XPath'); return xmlDOM; } catch (ex) ...{ } } return null; } else ...{ try ...{ var domParser = new window.DOMParser(); return domParser.parseFromString(markup, 'text/xml'); } catch (ex) ...{ return null; } } return null;} var $extend = function () ... { /// <summary>将从第2个开始的对象的属性全复制给第一个对象</summary> var target = arguments[0], a = 1; if ( arguments.length == 1 ) ...{ return target; } var prop; while (prop = arguments[a++])...{ for ( var i in prop ) ...{ target[i] = prop[i]; } } return target;} ; var Ajax = function (settings) ... { this._ajaxSettings = $extend(...{}, $Ajax.Settings, settings); this._xmlHttpRequest = new XMLHttpRequest(); } function Ajax$_onReadyStateChange() ... { if (this._xmlHttpRequest.readyState === 4 ) ...{ if(this._xmlHttpRequest.status == 200)...{ if(this._timer)...{ window.clearTimeout(this._timer); this._timer = null; } if(typeof(this._ajaxSettings.success) == 'function')...{ this._ajaxSettings.success(this._xmlHttpRequest.responseText); } this._isActive = false; } } } function Ajax$call(settings) ... { if(this._isActive == true)...{ throw new Error("正在使用中..."); } var s = $extend(this._ajaxSettings, settings); var xml = this._xmlHttpRequest; xml.onreadystatechange = $createDelegate(this,this._onReadyStateChange); if ( s.data ) ...{ s.data = Ajax.getUrlParam(s.data); //url传递的格式(值进行json) } if ( s.type.toLowerCase() == "post" )...{ xml.open(s.type, s.url, s.async); xml.setRequestHeader("Content-Type", s.contentType); }else if(s.type.toLowerCase() == "get")...{ s.url += ((s.url.indexOf("?") > -1) ? "&" : "?") + s.data; s.data = null; xml.open(s.type, s.url, s.async); } if ( s.timeout > 0 )...{ this._timer = window.setTimeout(function()...{ if ( xml ) ...{ xml.abort(); if(typeof(s.fail) == 'function')...{ s.fail(new Error("ajax调用超时:"+s.timeout)) } } }, s.timeout); } try ...{ xml.send(s.data); this._isActive = true; } catch(e) ...{ if(typeof(s.fail) == 'function')...{ s.fail(e); } } } function Ajax$dispose() ... { this._xmlHttpRequest.onreadystatechange = function()...{}; this._xmlHttpRequest = null; } Ajax.prototype = ... { _isActive: false, _ajaxSettings : null, _timer: null, _xmlHttpRequest: null, _onReadyStateChange: Ajax$_onReadyStateChange, call: Ajax$call, dispose: Ajax$dispose} Ajax.getUrlParam = function ( hs ) ... { var s = []; for ( var j in hs ) ...{ s.push( encodeURIComponent(j) + "=" + encodeURIComponent( hs[j] ) ); } return s.join("&");} $Ajax = function (settings) ... { var success = settings.success; var fail = settings.fail; var a = new Ajax(); settings = $extend(...{},$Ajax.Settings,settings,...{ success : function(text)...{ success(text); a.dispose(); }, fail : function(e)...{ fail(e); a.dispose(); } }); if(settings.data)...{ settings.data["__ajaxCallNoCache"] = new Date(); }else...{ settings.data = ...{}; settings.data["__ajaxCallNoCache"] = new Date(); } a.call(settings);} $Ajax.Settings = ... { type: "GET", timeout: 0, contentType: "application/x-www-form-urlencoded", processData: true, async: true, data: null, success: null, fail: null} $Ajax.ajaxSetup = function (settings) ... { $extend($Ajax.Settings,settings);} 沧桑雨迢迢 23 : 54 : 21 给大家一个ajax caller沧桑雨迢迢 23 : 54 : 45 实现跨浏览器,ajax交互操作的所有功能 ~~ 沧桑雨迢迢 23 : 55 : 18 调用: $Ajax( ... { url: 'HttpService.aspx', type: 'get', async: false, data:...{ methodName: 'lala', param: 123 }, success: function(text)...{ alert(text+"!1"); }, fail: function(e)...{ alert(e.message); } } );