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.php document.head.appendChild(script[0]); } } } /** * 模擬ajax的 jsonp請求 * @param {[type]} options [description] * @return {[type]} [description] */ function createAjax(options) { if (typeof url === "object") { options = url; url = undefined; } options = options || {}; /** * 參數 * jQuery.ajaxSetup 是默認參數 * @type {[type]} */ var s = jQuery.ajaxSetup({}, options); // Deferreds // 異步機制 var deferred = jQuery.Deferred(); var completeDeferred = jQuery.Callbacks("once memory"); /** * 實際返回的ajax對象 * @type {Object} */ var jqXHR = {} // 把jqXHR對象轉化promise對象, 主站蜘蛛池模板: 个旧市| 香格里拉县| 青冈县| 塘沽区| 万安县| 辉南县| 加查县| 柘城县| 五寨县| 中西区| 九江县| 徐闻县| 临城县| 揭西县| 岗巴县| 连州市| 自治县| 香河县| 清原| 盐池县| 乌恰县| 南召县| 阳原县| 黄陵县| 新建县| 紫阳县| 郎溪县| 遵义市| 三原县| 德惠市| 广宁县| 乐至县| 平定县| 正镶白旗| 郧西县| 沙洋县| 昌江| 大同市| 建始县| 罗甸县| 扎鲁特旗|