代码之家  ›  专栏  ›  技术社区  ›  montrealist

如何在jQuery中测试URL

  •  2
  • montrealist  · 技术社区  · 17 年前

    我有一个我想在一个 FancyBox 如何在附加插件之前测试一个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
        }
    });
    

    问题是, xhr

    谢谢,祝大家周末愉快。

    4 回复  |  直到 17 年前
        1
  •  7
  •   Paolo Bergantino    17 年前

    你可以这样做,尽管我会质疑对每个链接提出请求有多明智。。。。

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

    如果您不打算对页面内容执行任何操作,可以将“GET”与“HEAD”切换为只获取所请求页面的页眉,这样会更快并让您知道您想要什么。

        2
  •  1
  •   Breton    17 年前

    这是可以而且应该在服务器端完成一次(也许每天)的事情。从那里你应该生成适当的html/js。从工程的角度来看,这对我来说似乎是一个更明智的方法。

    另外,您也可以编写页面,让一天中的第一个请求进行检查,结果被缓存到磁盘(或内存)中,以备将来在一天中的请求。第一次加载可能会有点慢。

        3
  •  0
  •   StuperUser    15 年前

    看看你的问题 The problem is, xhr will not always be defined because JS doesn't wait for the request to complete. ,可以通过创建

    $().ajax({args});
    

    打电话给 async: false

    检查论点 async http://api.jquery.com/jQuery.ajax/

        4
  •  0
  •   recluze    15 年前

    我知道这是相当古老的,但仍在添加它,以防有人遇到需要更多的选择。看看这个插件: http://www.webmonkey.com/2010/07/beautify-broken-links-with-catch404/

    但现在我们有了阿迪的第404集 Osmani,一个处理 与风格断绝联系。部署 在你的网站上点击404,而不是 看到一个页面报告链接断开, 一个灯箱)通知他们 页面不在那里。窗户也是