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

时间:2012-03-12 16:24:09

标签: javascript jquery ajax cross-domain

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

但是,当远程网址关闭时(偶尔发生一次),我的网页会挂起,因为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”已启动,那么我会看到消息“ok”。如果“somePage”无法访问,那么我什么都看不到。

关于如何调用“错误”函数的任何想法?或者更重要的是,如何检测是否可以访问跨域URL?

这甚至可能吗?

谢谢,

1 个答案:

答案 0 :(得分:10)

添加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");
        }
    });

DEMO