我有一个应用程序可以对其余的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,方法,完成回调,失败回调等等)后取消最后一个请求。但我想为这个问题找到更好的解决方案。
提前致谢。