最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

JavaScript中模拟实现jsonp_javascript技巧

来源:动视网 责编:小采 时间:2020-11-27 21:39:46
文档

JavaScript中模拟实现jsonp_javascript技巧

JavaScript中模拟实现jsonp_javascript技巧: 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
推荐度:
导读JavaScript中模拟实现jsonp_javascript技巧: 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


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("").prop({
 async: true,
 charset: s.scriptCharset,
 src: s.url
 }).on(
 "load error",
 callback = function(evt) {
 script.remove();
 callback = null;
 if (evt) {
 complete()
 }
 }
 );
 //

文档

JavaScript中模拟实现jsonp_javascript技巧

JavaScript中模拟实现jsonp_javascript技巧: 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
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top