function ajax() { var ajaxData = { type: arguments[0].type || "GET", url: arguments[0].url || "", async: arguments[0].async || true, data: arguments[0].data || null, dataType: arguments[0].dataType || "text", contentType: arguments[0].contentType || "application/x-www-form-urlencoded", beforeSend: arguments[0].beforeSend || function() {}, success: arguments[0].success || function() {}, error: arguments[0].error || function() {} } ajaxData.beforeSend(); var xhr = createxmlHttpRequest(); xhr.responseType = ajaxData.dataType; xhr.open(ajaxData.type, ajaxData.url, ajaxData.async); xhr.withCredentials = true; xhr.setRequestHeader('Content-Type', ajaxData.contentType); xhr.send(convertData(ajaxData.data)); xhr.onreadystatechange = function() { if(xhr.readyState == 4) { if(xhr.status == 200) { ajaxData.success(xhr.response); } else { ajaxData.error(); } } } } //创建http请求 function createxmlHttpRequest() { if(window.ActiveXObject) { return new ActiveXObject("Microsoft.XMLHTTP"); //XMLHttpRequest => 可扩展超文本传输请求 } else if(window.XMLHttpRequest) { return new XMLHttpRequest(); } } //数据转换 function convertData(data) { if(typeof data == 'object') { var convertResult = ''; for(var c in data) { convertResult += c + "=" + data[c] + "&"; } //substring => 子字符串 convertResult = convertResult.substring(0, convertResult.length - 1); return convertResult; } else { return data; } } ajax({ type: 'POST', url: '', async: true, dataType: '', data: {}, beforeSend: function() { //some js code }, success: function(result) { console.log(result); }, error: function(error,xml) { console.log(error); console.log(xml.readyState); } })
原生js语句封装jquery版ajax
最新推荐文章于 2021-11-29 14:52:34 发布