<div class="jb51code">
<pre class="brush:js;">
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,jqXHR)
//扩充dataTypes
options.dataTypes.unshift(dataTypeOrTransport);
//预处理script类型
prescript(options)
}
/**
- 分发器
- @return {[type]} [description]
*/
function inspectPrefiltersOrTransportsB(s,jqXHR) {
return {
send: function(_,complete) {
var script = jQuery("