一尘不染

我可以使用AJAX +跨域+ jsonp测试URL是否可访问吗?

ajax

我正在使用JQuery从URL中获取信息并异步显示在我的页面上。该URL来自其他域,因此我使用JSONP来获取数据。很好

但是,当远程URL关闭时(偶尔发生),我的页面挂起,因为JQuery
AJAX
没有调用“成功”或“错误”功能。

我正在使用JQuery 1.7。

我的代码如下:

    $.ajax({
        type : "GET",
        url : "http://otherdomain.com/somePage.html",
        data : params,
        dataType : "jsonp",
        jsonp : "jsonp",

        success : function (response, textS, xhr) {
            alert("ok");
        },
        error : function (xmlHttpRequest, textStatus, errorThrown) {
            alert("not ok " + errorThrown);
        }
    });

如果“ somePage”启动,那么我会看到消息“确定”。如果“ somePage”无法访问,那么我什么也看不到。

关于如何获取“错误”功能的任何想法都会被调用?或更重要的是,如何检测跨域URL是否可访问?

那有可能吗?

谢谢,


阅读 231

收藏
2020-07-26

共1个答案

一尘不染

添加一个 timeout

$.ajax({
        type : "GET",
        url : "http://otherdomain.com/somePage.html",
        data : params,
        timeout:3000,
        dataType : "jsonp",
        jsonp : "jsonp",

        success : function (response, textS, xhr) {
            alert("ok");
        },
        error : function (xmlHttpRequest, textStatus, errorThrown) {
            alert("not ok " + errorThrown);
             if(textStatus==='timeout')
              alert("request timed out");
        }
    });

演示

2020-07-26