检查Javascript中的URL是否已损坏

时间:2010-10-12 14:15:46

标签: javascript jquery http

这个问题之前已经发布在Stack上,但没有具体说明我想要了解的内容。

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

我在上一篇文章中发现了这一点:

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

但由于某些原因,它似乎并没有在萤火虫中运行。

我很抱歉道歉。

2 个答案:

答案 0 :(得分:36)

我建议使用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
    }
});

答案 1 :(得分:1)

现代,交叉和短途

checkLink = async url => Boolean(url) || (await fetch(url)).ok

与以下内容相同:

async checkLink(url) { return Boolean(url) || (await fetch(url)).ok }

与以下内容相同:

async function checkLink(url) { return Boolean(url) || (await fetch(url)).ok }

与以下内容相同:

注意:从Gecko 30.0(Firefox 30.0 / Thunderbird 30.0 / SeaMonkey 2.27),Blink 39.0和Edge 13上的同步请求 主线程由于对主线程的负面影响而被弃用 用户体验。

交叉解决方案(旧的,过时的)

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