纵有疾风起
人生不言弃

自定义jsonp方法

/** * 自定义封装jsonp方法 * @param options */jsonp = function(options) {  options = options || {};  if (!options.url || !options.callback) {    throw new Error("参数不合法");  }  //创建 script 标签并加入到页面中  var callbackName = ('jsonp_' + Math.random()).replace(".", "");  var oHead = document.getElementsByTagName('head')[0];  options.data[options.callback] = callbackName;  var params = formatParams(options.data);  var oS = document.createElement('script');  oHead.appendChild(oS);  //创建jsonp回调函数  window[callbackName] = function(json) {    oHead.removeChild(oS);    clearTimeout(oS.timer);    window[callbackName] = null;    options.success && options.success(json);  };  //发送请求  oS.src = options.url + '?' + params;  //超时处理  if (options.time) {    oS.timer = setTimeout(function() {      window[callbackName] = null;      oHead.removeChild(oS);      options.fail && options.fail({        message: "超时"      });    },    time);  }};/** * 格式化参数 * @param data * @returns {string} */formatParams = function(data) {  var arr = [];  for (var name in data) {    arr.push(encodeURIComponent(name) + '=' + encodeURIComponent(data[name]));  }  return arr.join('&');}

文章转载于:https://www.jianshu.com/p/e8c9c02ada9e

原著是一个有趣的人,若有侵权,请通知删除

未经允许不得转载:起风网 » 自定义jsonp方法
分享到: 生成海报

评论 抢沙发

评论前必须登录!

立即登录