ajax自己封装
Posted 大桥的前端日志
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ajax自己封装相关的知识,希望对你有一定的参考价值。
function paramsSeralize(obj){ if(!obj || typeof !== ‘object‘) return obj; let res = ‘‘; for (const key in obj) { if (obj.hasOwnProperty(key)) { res += `&${key}=${obj[key]}` } } result = result.substring(1); return result; } function ajax (options) { let params = Object.assign({ method: ‘GET‘, url: ‘‘, data: null, params: null }, options) let isGet = /^(GET|OPTIONS|HEAD|DELETE)$/i.test(options.method) options.params ? options.params = paramsSeralize(options.params) : null; options.data ? options.data = paramsSeralize(options.data) : null; if(isGet && options.params){ options.url += `${options.url.indexOf(‘?‘)>=0 ? ‘&‘ : ‘?‘}${options.params}` } let xhr = new XMLHttpRequest; xhr.open(options.method, options.url) !isGet ? xhr.setRequestHeader(‘Content-type‘,‘x-www-form-urlencoded‘) : null; xhr.onreadystatechange = function () { let { readyState, status, responseText } = xhr; if (/^2d{2}/.test(status) && readyState === 4) { responseText = JSON.stringify(responseText) options.success && options.success() } } xhr.send(isGet ? null : options.data); }
使用
ajax({ method: ‘GET‘, url: ‘/user/list‘, data: { lx: 1, number: 2 }, params: { type: 1 }, success (res) { } })
以上是关于ajax自己封装的主要内容,如果未能解决你的问题,请参考以下文章
jQuery封装的ajax方法发送jsonp请求ajax全局事件restful风格的api获取XML数据