ITPub博客

首页 > 应用开发 > Javascript > JavaScript中模拟实现jsonp

JavaScript中模拟实现jsonp

Javascript 作者:太阳是我啃圆的 时间:2021-01-27 15:41:46 0 删除 编辑

这篇文章主要介绍了JavaScript中模拟实现jsonp,本文直接给出实现代码,代码中包含详细注释,需要的朋友可以参考下

  ?

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 function prescript(s) { if (s.cache === undefined) { s.cache = false; } if (s.crossDomain) { s.type = "GET"; } }     function prejsonp(s, originalSettings, jqXHR) { // 给回调函数命名 var callbackName = s.jsonpCallback s.url += (/(?:)/.test(s.url) ? "&" : "?") + s.jsonp + "=" + callbackName; // 脚本执行后使用数据转换器来检索json // 提供给代码获取服务器的是据 s.getData = function() { if (!responseContainer) { jQuery.error(callbackName + " was not called"); } return responseContainer[0]; }; //修改处理机制 s.dataTypes[0] = "json"; // 创建一个全局函数 overwritten = window[callbackName]; //用来收集服务器给的数据 window[callbackName] = function() { responseContainer = arguments; };   return "script"; }   /** * jsonp的预先处理 */ function inspectPrefiltersOrTransportsA(options, originalOptions, jqXHR) { //预处理jsonp var dataTypeOrTransport = prejsonp(options, originalOptions, jqXHR) //扩充dataTypes options.dataTypes.unshift(dataTypeOrTransport); //预处理script类型 prescript(options) }     /** * 分发器 * @return {[type]} [description] */ function inspectPrefiltersOrTransportsB(s, originalOptions, jqXHR) { return { send: function(_, complete) { var script = jQuery("<script>").prop({ async: true, charset: s.scriptCharset, src: s.url }).on( "load error", callback = function(evt) { script.remove(); callback = null; if (evt) { complete() } } ); //<script async="" src="http://192.168.1.113:8080/github/jQuery/jsonp.




来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/69993754/viewspace-2753754/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2021-01-22

  • 博文量
    13
  • 访问量
    7901