JavaScript中模擬實現jsonp
這篇文章主要介紹了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部落格 ” ,連結:http://blog.itpub.net/69993754/viewspace-2753754/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- javascript模擬實現replaceAll()JavaScript
- javascript模擬new的實現JavaScript
- JavaScript 模擬new的實現JavaScript
- JavaScript模擬實現replaceAll方法JavaScript
- 原生JavaScript實現AJAX、JSONPJavaScriptJSON
- 細節解析 JavaScript 中 bind 函式的模擬實現JavaScript函式
- JavaScript專題之模擬實現newJavaScript
- JavaScript專題之模擬實現bindJavaScript
- javascript模擬實現函式過載JavaScript函式
- JavaScript深入之new的模擬實現JavaScript
- JavaScript深入之bind的模擬實現JavaScript
- JavaScript 深入之new的模擬實現JavaScript
- JavaScript 深入之bind的模擬實現JavaScript
- javascript之模擬call以及apply實現JavaScriptAPP
- javascript模擬實現ArrayList效果程式碼例項JavaScript
- javascript模擬實現trim()方法例項程式碼JavaScript
- javascript模擬實現toAarray()方法程式碼例項JavaScript
- javascript模擬實現in_array()判斷指定元素是否在陣列中JavaScript陣列
- JavaScript 深入之 call 和 apply 的模擬實現JavaScriptAPP
- JavaScript模擬拋物運動的程式碼實現JavaScript
- JavaScript專題之模擬實現call和applyJavaScriptAPP
- JavaScript 之 call和apply,bind 的模擬實現JavaScriptAPP
- 原生javascript模擬實現jQuery的id選擇器JavaScriptjQuery
- javascript模擬實現私有屬性簡單介紹JavaScript
- JavaScript深入之call和apply的模擬實現JavaScriptAPP
- JavaScript 深入之call和apply的模擬實現JavaScriptAPP
- javascript模擬實現滾動條效果程式碼例項JavaScript
- promise的模擬實現Promise
- javascript模擬實現連結的title效果例項程式碼JavaScript
- 【Java】——模擬登入實現Java
- JavaScript 模擬 HashMap例子JavaScriptHashMap
- 如何用 3KB 不到的 JavaScript 實現微機模擬器JavaScript
- 模擬js中的call、apply和bind的實現JSAPP
- 如何在測試環境中實現 API 模擬呼叫API
- 模擬實現apply/call/bindAPP
- bind,call,apply模擬實現APP
- 模擬實現簡易版shell
- js模擬實現列舉效果JS