如果多个调用之一失败,则无法成功调用JSONP请求

时间:2015-04-21 23:27:24

标签: javascript jquery ajax json jsonp

这是抽象方式的问题,我有多个IP。我想知道服务器所在的IP。服务器托管一个json文件以帮助处理JSONP请求。

for (index = 0; index < ipArray.length; ++index) {
            var ip = ipArray[index];
            $.ajax({
                url: utils.getJSONPRequestURL(ip),
                jsonpCallback: 'callback',
                dataType: "jsonp",
                success: function (data) {console.log(this.url)}
            });
        }

如果IP无法访问,上述功能正常工作,它将调用成功函数,该函数打印成功的URL。但是,如果一个调用返回net :: ERR_NETWORK_ACCESS_DENIED错误。我根本不会得到成功的回调。

请注意,如果我从ajax请求中删除jsonpCallback选项并定义

window.callback = function(data) {console.log(data)}

尽管存在上述错误,但仍会调用此函数,但我不知道从哪个URL获取此回调。

提前谢谢

1 个答案:

答案 0 :(得分:0)

尝试对ajax函数进行以下修改:

        $.ajax({
            url: utils.getJSONPRequestURL(ip),
            jsonpCallback: 'callback',
            dataType: "jsonp",
            success: function (data) {console.log(this.url)}
        }).done(function(){
           console.log("done");
        });

无论通话成功与否,都应触发完成功能。