2010-10-12 45 views
18

这个问题已经发布在Stack之前,但没有一个关于我想了解的内容。检查一个URL是否在Javascript中被破坏

检查URL是否正确以发送http头部请求的最简单方法。但你如何使用它来指定URL?

我发现这在以前的文章:

function UrlExists(url) { 
    var http = new XMLHttpRequest(); 
    http.open('HEAD', url, false); 
    http.send(); 
    return http.status!=404; 
} 

但它似乎并没有在萤火虫运行的几个原因。

对于呆呆,我提前道歉。

+0

是萤火虫发出任何错误?希望你在你自己的服务器上做XHR,而不是在另一个站点(重新制定相同的原始策略)。我复制粘贴代码在萤火虫,它工作正常,并返回真/假 – 2010-10-12 16:14:06

+1

我输入它作为'urlExists(“http://www.stackoverflow.com/”);'它不起作用。 – Trip 2010-10-13 11:57:39

回答

35

我建议使用jQuery的正确的跨浏览器的Ajax请求:

function UrlExists(url, cb){ 
    jQuery.ajax({ 
     url:  url, 
     dataType: 'text', 
     type:  'GET', 
     complete: function(xhr){ 
      if(typeof cb === 'function') 
       cb.apply(this, [xhr.status]); 
     } 
    }); 
} 

用法:

UrlExists('/path/script.pl', function(status){ 
    if(status === 200){ 
     // file was found 
    } 
    else if(status === 404){ 
     // 404 not found 
    } 
}); 
+5

+1,但是您不想检查200和404以外的状态代码吗?它可能是500或304等 – 2010-10-12 14:26:11

+0

你的if语句是否完整缺少'{}'? – Trip 2010-10-12 14:37:30

+0

@ Neil:事实上,它应该扩展到检查更多的状态代码。 @Trip:不,你可以在没有{{}的情况下做一个语句 – jAndy 2010-10-12 14:53:37