Actualización
This commit is contained in:
132
plugin/mindmap/edit-mindmap/vendor/js/kampfer/ajax.js
vendored
Normal file
132
plugin/mindmap/edit-mindmap/vendor/js/kampfer/ajax.js
vendored
Normal file
@@ -0,0 +1,132 @@
|
||||
kampfer.provide('ajax');
|
||||
|
||||
/**
|
||||
* @Author l.w.kampfer@gmail.com
|
||||
* @Name AJAX工具函数
|
||||
* @Version 1.0
|
||||
*/
|
||||
|
||||
(function( window, kampfer ) {
|
||||
//XHR构造函数
|
||||
var _XHRFactories = [
|
||||
function() { return new XMLHttpRequest(); },
|
||||
function() { return new window.ActiveXObject('Microsoft.XMLHTTP'); }
|
||||
];
|
||||
|
||||
//默认设置
|
||||
var _defaultSettings = {
|
||||
url : '',
|
||||
method : 'GET',
|
||||
async : true,
|
||||
parameters : {},
|
||||
timeout : 10000,
|
||||
ontimeout : function() {},
|
||||
onerror : function() {},
|
||||
onsuccess : function() {},
|
||||
onbeforesend : function() {},
|
||||
context : null,
|
||||
headers : {}
|
||||
};
|
||||
|
||||
var responceTypes = {
|
||||
xml : /xml/,
|
||||
json : /json/,
|
||||
//html : /html/,
|
||||
javascript : /javascript/
|
||||
};
|
||||
|
||||
//将对象序列化为字符串
|
||||
function _encodeFormData( data ) {
|
||||
var pairs = [],
|
||||
regSpace = /%20/g;
|
||||
for( var name in data ) {
|
||||
var value = data[name].toString();
|
||||
//使用encodeURIComponent对名值对进行编码
|
||||
var pair = encodeURIComponent( name ).replace( regSpace, '+' ) + '=' +
|
||||
encodeURIComponent( value ).replace( regSpace, '+' );
|
||||
pairs.push( pair );
|
||||
}
|
||||
return pairs.join( '&' );
|
||||
}
|
||||
|
||||
//区别对待返回类型
|
||||
function _getResponse( request ) {
|
||||
var contentType = request.getResponseHeader('Content-Type');
|
||||
if( responceTypes.xml.test( contentType ) ) {
|
||||
return request.responseXML;
|
||||
}else if( responceTypes.json.test( contentType ) || responceTypes.javascript.test( contentType ) ) {
|
||||
return eval( '(' + request.responseText + ')' );
|
||||
}else{
|
||||
return request.responseText;
|
||||
}
|
||||
}
|
||||
|
||||
//创建新的XMLHttpRequest对象
|
||||
function _createNewXHR() {
|
||||
for( var i = 0, l = _XHRFactories.length; i < l; i++ ) {
|
||||
try {
|
||||
_XHRFactories[i]();
|
||||
_createNewXHR = _XHRFactories[i];
|
||||
break;
|
||||
} catch( e ) {
|
||||
//consle.log( ' XHR not supported' );
|
||||
}
|
||||
}
|
||||
return _createNewXHR();
|
||||
}
|
||||
|
||||
var ajax = function( options ) {
|
||||
var newXHR = _createNewXHR(),
|
||||
timer,
|
||||
url,
|
||||
parameters;
|
||||
options = kampfer.extend( {}, _defaultSettings, options );
|
||||
//设置执行上下文
|
||||
if( !options.context ) {
|
||||
options.context = newXHR;
|
||||
}
|
||||
if( options.ontimeout ) {
|
||||
//闭包
|
||||
timer = setTimeout( function(){
|
||||
newXHR.abort();
|
||||
if ( options.ontimeout ) {
|
||||
options.ontimeout.call( options.context, options );
|
||||
}
|
||||
}, options.timeout );
|
||||
}
|
||||
newXHR.onreadystatechange = function() {
|
||||
if( newXHR.readyState === 4 ) {
|
||||
if( timer ) {
|
||||
clearTimeout( timer );
|
||||
}
|
||||
if( newXHR.status === 200 ) {
|
||||
options.onsuccess.call( options.context, _getResponse( newXHR ) );
|
||||
} else {
|
||||
if( options.onerror ) {
|
||||
options.onerror.call( options.context, newXHR );
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
url = options.url;
|
||||
parameters = options.parameters && _encodeFormData( options.parameters );
|
||||
if( options.method.toUpperCase() === 'GET' ) {
|
||||
if( options.parameters ) {
|
||||
url += '?' + parameters + '&_=' + ( +new Date() );
|
||||
}
|
||||
newXHR.open( 'GET', url, options.async );
|
||||
options.onbeforesend && options.onbeforesend.call( options.context, newXHR );
|
||||
newXHR.send( null );
|
||||
} else if( options.method.toUpperCase() === 'POST' ) {
|
||||
newXHR.open( 'POST', url, options.async );
|
||||
options.onbeforesend && options.onbeforesend.call( options.context, newXHR );
|
||||
newXHR.setRequestHeader( 'Content-type', 'application/x-www-form-urlencoded' );
|
||||
newXHR.send( parameters );
|
||||
}
|
||||
};
|
||||
|
||||
kampfer.extend( kampfer, {
|
||||
ajax : ajax
|
||||
});
|
||||
|
||||
})( window, kampfer );
|
||||
Reference in New Issue
Block a user