2016-01-15 3 views
2

Извините, это может быть дублированный пост. есть ли способ javascript/jquery, чтобы определить, доступна ли ссылка url или нет? для экземпляров обнаружение http://www.thisissample.com/ недоступно и возвращает false, если доступно https://www.google.com.my/ и возвращает true.Проверьте, доступен ли адресный путь

+1

почему бы не просто сделать запрос? – cviejo

ответ

2

Итак, поскольку вы можете столкнуться с проблемами при выполнении запроса ajax из-за ограничений между доменами, другая стратегия будет пытаться загрузить URL-адрес в тег скрипта, который принимает другие домены. Вот как выглядел бы ваш код:

function checkURL(url) { 
    var scriptTag = document.body.appendChild(document.createElement("script")); 
    scriptTag.onload = function() { 
     alert(url + " is available"); 
    }; 
    scriptTag.onerror = function() { 
     alert(url + " is not available"); 
    }; 
    scriptTag.src = url; 
} 
+0

Ничего себе .. это сработало! извините, если есть ограничение для этого? – user3835327

+1

Это должно хорошо работать во всех современных браузерах. Ограничение между доменами произойдет только в том случае, если вы попытаетесь выполнить запрос ajax. –

+0

Благодарим вас за решение, hav a nice day .. – user3835327

0

Вы можете использовать XHR и посмотреть, отвечает ли он 404 не найденным или нет. Прочитайте this для кода состояния HTTP.

Пожалуйста, попробуйте этот код:

<script> 
    function checkURL(url){ 
     var reader = new XMLHttpRequest(); 
     var checkFor = url; 
     reader.open('get', checkFor, true); 
     reader.onreadystatechange = checkReadyState; 
     function checkReadyState() { 
      if (reader.readyState === 4) { 
       if ((reader.status == 200) || (reader.status == 0)) { 
        //document.location.href = checkFor; 
        alert("Page exist !!!"); 
       } 
       else if(request.status === 404) { 
        alert("Not Found"); 
       } 
       else { 
        alert("Status Code : " + reader.status); 
       } 

      } 
     } 
     reader.send(null); 
    } 
</script> 
<body onload="checkURL('http://www.mozill.org/');"> 
</body> 

Пожалуйста, обратите внимание, что он будет работать только на же происхождения. Для другого хоста вы можете использовать серверный язык для этого. Как это ниже:

<?php 
    $url = parse_url('https://www.mozilla.org/'); 

    $host = $url['host']; 
    $port = 80; 
    $path = $url['path']; 
    $query = (!empty($url['query'])?$url['query']:null); 

    $request = "HEAD $path?$query HTTP/1.1\r\n" 
       ."Host: $host\r\n" 
       ."Connection: close\r\n" 
       ."\r\n"; 

    $address = gethostbyname($host); 
    $socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP); 
    socket_connect($socket, $address, $port); 
    socket_write($socket, $request, strlen($request)); 
    $response = split(' ', socket_read($socket, 1024)); 

    if($response[1] >= 200 && $response[1] < 300){ 
     print "<p>Response: ".$response[1]." - Success URL exist !!!</p>\r\n"; 
    } 
    else if($response[1] >= 300 && $response[1] < 400){ 
     print "<p>Response: ".$response[1]." - Redirection</p>\r\n"; 
    } 
    else if($response[1] >= 400 && $response[1] < 500){ 
     print "<p>Response: ".$response[1]." - Client Error</p>\r\n"; 
    } 
    else if($response[1] >= 500){ 
     print "<p>Response: ".$response[1]." - Server Error</p>\r\n"; 
    } 
    socket_close($socket); 
?> 

Надежда этом помочь вам ...

Смежные вопросы