JavaScript中模拟实现jsonp

前端之家收集整理的这篇文章主要介绍了JavaScript中模拟实现jsonp前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

<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("

猜你在找的JavaScript相关文章