原生ajax的get和post方法封装
get 方法
function serialize (data) { if (!data) { return ''; } var paris = []; for (var key in data) { if (!data.hasOwnProperty(key) || typeof data[key] === 'function') { continue; } var name = encodeURIComponent(key); var value = encodeURIComponent(data[key].toString()); paris.push(name + '=' + value); } return paris.join('&'); } function get (url, options, callback) { var req; if (window.XMLHttpRequest) { req = new XMLHttpRequest(); } else if (window.ActiveXObject) { // 兼容IE7及以下版本 req = new ActiveXObject(); } req.onreadystatechange = function () { if (req.readyState === 4) { if (req.status === 200) { console.log('请求成功'); callback(req.response); } } else { console.log('请求中...'); } } // 将传递的参数序列化 if (serialize(options) !== '') { url = url + '?' + serialize(options); } req.open('get', url); req.send(null); }
post方法
function serialize (data) { if (!data) { return ''; } var paris = []; for (var key in data) { if (!data.hasOwnProperty(key) || typeof data[key] === 'function') { continue; } var name = encodeURIComponent(key); var value = encodeURIComponent(data[key].toString()); paris.push(name + '=' + value); } return paris.join('&'); } function post (url, options, callback) { var req; if (window.XMLHttpRequest) { req = new XMLHttpRequest(); } else if (window.ActiveXObject) { // 兼容IE7及以下版本 req = new ActiveXObject(); } req.onreadystatechange = function () { if (req.readyState === 4) { if (req.status === 200) { console.log('请求成功'); callback(req.response); } } else { console.log('请求中...'); } } req.open('post', url); req.send(serialize(options)); }
get与post方法结合
function serialize (data) { if (!data) { return ''; } var paris = []; for (var key in data) { if (!data.hasOwnProperty(key) || typeof data[key] === 'function') { continue; } var name = encodeURIComponent(key); var value = encodeURIComponent(data[key].toString()); paris.push(name + '=' + value); } return paris.join('&'); } function request (method, url, options, callback) { var req; if (window.XMLHttpRequest) { req = new XMLHttpRequest(); } else if (window.ActiveXObject) { // 兼容IE7及以下版本 req = new ActiveXObject(); } req.onreadystatechange = function () { if (req.readyState === 4) { if (req.status === 200) { console.log('请求成功'); callback(req.response); } } else { console.log('请求中...'); } } url = method === 'get' && serialize(options) !== '' ? url + '?' + serialize(options) : url; let sendParams = method === 'get' ? null : serialize(options); req.open(method, url); req.send(sendParams); }