原生javascript封装类似jquery的ajax请求跨域函数
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了原生javascript封装类似jquery的ajax请求跨域函数,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2841字,纯文字阅读大概需要5分钟。
内容图文
function ajax(opt) { opt = opt || {}; // 对实参处理 var xmlhttp, method, url, async, dataType, data; method = opt.method || 'GET'; // 默认method为GET method = trim(method).toUpperCase(); //转换成大写并去除空格 url = opt.url //请求地址 url = trim(url); async = opt.async || true; // 默认为异步请求 dataType = opt.dataType || 'HTML'; // 设置跨域 dataType = trim(dataType).toUpperCase(); data = opt.data || {}; // 发送参数 function trim(str) { return str.replace(/^\s+|\s+$/g, ""); // 删除左右空格 }; var formatParams = function () { // 定义格式化参数函数 if (typeof (data) == "object") { var str = ""; for (var key in data) { str += key + "=" + data[pro] + "&"; } data = str.substr(0, str.length - 1); } if (method == 'GET' || dataType == 'JSONP') { if (url.lastIndexOf('?') == -1) { url += '?' + data; } else { url += '&' + data; } } } if (window.XMLHttpRequest) { // 创建XMLHttpRequest对象 //Chrome || Firefox xmlHttp = new XMLHttpRequest(); } else { //IE xmlHttp = new ActiveXObject("Microsoft.XMLHTTP"); } if (dataType == 'JSONP') { // 跨域请求 if (typeof (opt.beforeSend) == 'function') opt.beforeSend(xmlHttp); var callbackName = ('jsonp_' + Math.random()).replace(".", ""); var oHeader = document.getElementsByTagName('header')[0]; data.callback = callbackName; var ele = document.createElement('script'); ele.type = "text/javascript"; ele.onerror = function () { console.log('failed'); opt.error && opt.error("failed"); }; oHeader.appendChild(ele); window[callbackName] = function (json) { oHeader.removeChild(ele); window[callbackName] = null; opt.success && opt.success(json); }; formatParams(); ele.src = url; return; } else { formatParams(); xmlHttp.open(method, url, async); xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded;charset=utf-8"); // 设置响应头 if (typeof (opt.beforeSend) == 'function') opt.beforeSend(xmlHttp); xmlHttp.send(data); // 发送请求 xmlHttp.onreadystatechange = function () { // 响应处理 if (xmlHttp.status != 200) { console.log(xmlHttp.status + 'failed'); opt.error && opt.error(xmlHttp.status + 'failed'); return; } if (xmlHttp.readyState == 4 && xmlHttp.status == 200) { if (dataType == 'JSON') { try { res = JSON.parse(xmlHttp.responseText); } catch (e) { console.log('json格式错误'); opt.error('json格式错误'); } } else if (dataType == 'XML') { res = xmlHttp.responseXML; } else { res = xmlHttp.responseText; } opt.success && opt.success(res); } } } }
//调用示例
ajax({ url: 'http://www.baidu.com', type: "get", dataType: "jsonp", success: function (data) { console.log(data); }, error: function (err) { console.log(err); } })
内容总结
以上是互联网集市为您收集整理的原生javascript封装类似jquery的ajax请求跨域函数全部内容,希望文章能够帮你解决原生javascript封装类似jquery的ajax请求跨域函数所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。