拦截Ajax请求并使用jquery转换它的Jsonp请求

时间:2016-10-27 16:29:25

标签: javascript jquery ajax callback jsonp

我有一个应用程序可以对其余的API进行许多ajax调用,这些调用是在许多不同的js文件中触发的。

我想拦截所有这些请求,并以jsonp请求重新发送(用于跨域目的)。

我可以简单地在$ .ajax(..)中设置dataType:“jsonp”,但这种方法有太多的js文件,因此,我需要使用拦截器执行此操作以避免编辑所有这些文件。 / p>

我尝试过使用beforeSend:

$.ajaxSetup({
    beforeSend: function (jqXHR, settings) {
        if (someFilter(settings))
            return;
        settings.dataType = "jsonp";
    }
});

但是这不会像$ .ajax(..)那样添加其他诸如'callback'之类的参数,也不会添加回调url参数。

$ .ajax(..)在使用“jsonp”dataType时自动附加所有必需的参数,使用其.done()函数作为jsonp回调。

我可以使用拦截器吗?

我想也许我可以从拦截的那个中创建一个新的jsonp请求,在提取相关信息(url,方法,完成回调,失败回调等等)后取消最后一个请求。但我想为这个问题找到更好的解决方案。

提前致谢。

0 个答案:

没有答案