如何在jQuery中测试URL

mon*_*ist 2 ajax jquery

我有一个URL,我想在FancyBox(或任何其他叠加类型弹出窗口)中打开.我不知道URL是否好,所以我想测试一下.如果无效 - 我不会将fancyBox插件附加到该特定URL,它将只是一个常规链接.如何在插入插件之前测试URL?尝试做类似的事情:

$("a.overlay").each(function() {
    var xhr = $.get(this.href, function(data, status) {
        // never executed in case of a failed request
    });
    if (xhr.status && xhr.status === 404)) {
        // not good, do nothing
    } else {
        // can attach plugin here
    }
});
Run Code Online (Sandbox Code Playgroud)

问题是,xhr并不总是定义,因为JS不等待请求完成.类似地,我不能使用回调函数,因为它似乎没有执行,以防请求失败(我可以在Firebug中看到它,但这不是很有用).

谢谢,祝大家周末愉快.

Pao*_*ino 7

你可以这样做,虽然我会质疑为每个链接提出请求是多么明智....

$("a.overlay").each(function() {
    var $a = $(this);
    $.ajax({
        type: 'GET',
        url: this.href,
        success: function() {
            // attach plugin here
        },
        error: function() {
            // not good, log it
        }            
    });
});
Run Code Online (Sandbox Code Playgroud)

如果你不打算对页面的内容做任何事情,你可以用'HEAD'切换'GET',只获取所请求页面的标题,这样会更快,让你知道你想要什么.