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模擬new的實現JavaScript
- JavaScript 模擬new的實現JavaScript
- JavaScript模擬實現replaceAll方法JavaScript
- JavaScript專題之模擬實現bindJavaScript
- javascript之模擬call以及apply實現JavaScriptAPP
- JavaScript專題之模擬實現newJavaScript
- 細節解析 JavaScript 中 bind 函式的模擬實現JavaScript函式
- JavaScript專題之模擬實現call和applyJavaScriptAPP
- JavaScript 深入之 call 和 apply 的模擬實現JavaScriptAPP
- JavaScript模擬拋物運動的程式碼實現JavaScript
- promise的模擬實現Promise
- 如何用 3KB 不到的 JavaScript 實現微機模擬器JavaScript
- JavaScript跨域呼叫、JSONPJavaScript跨域JSON
- 模擬實現apply/call/bindAPP
- bind,call,apply模擬實現APP
- 【Java】——模擬登入實現Java
- 如何模擬實現node中的Events模組(通俗易懂版)
- JSONP 跨域原理及實現JSON跨域
- 模擬js中的call、apply和bind的實現JSAPP
- JavaScript模擬拋物效果JavaScript
- 如何在測試環境中實現 API 模擬呼叫API
- bind/new/instanceof/assign模擬實現
- 模擬實現簡易版shell
- strlen函式的模擬實現函式
- 三維模擬模擬如何實現精益工廠佈局?
- javascript中的匯出和匯入實現模組化管理JavaScript
- 12.2 實現鍵盤模擬按鍵
- 12.3 實現模擬滑鼠錄製回放
- QQ模擬登入實現後篇
- qsort的模擬實現和練習
- Android模擬器繪製實現概述Android
- jquery 之 jsonp 與 laravel 實現跨域jQueryJSONLaravel跨域
- 50行不到實現Promise化的jsonpPromiseJSON
- JavaScript中new實現原理JavaScript
- Javascript中currying的實現JavaScript
- Vue響應式原理與模擬實現Vue
- Matlab實現模擬調製與解調Matlab
- 簡單實現.NET Hook與事件模擬Hook事件