2009-10-04 58 views
0

我正在尋找一種方法來檢查鏈接是否存在於某個頁面上。我知道這是可能的平,但我真的不知道如何做到這一點。ajax檢查鏈接是否在網站上

我有一個鏈接到其他網頁的列表,他們也應該有一個反向鏈接到我的網頁。我想檢查這一點,當反向鏈接時,應該出現一個文本,像「好」,當結果是否定的,如「沒有反向鏈接」

我知道我的鏈接應該在哪裏的網頁出現,以防你需要知道這一點。

任何幫助將是偉大的!

我發現了一段代碼,我認爲這可以用來滿足我的需求。我自己不知道如何,但如果有人能幫助我,這將是非常棒的。

這是代碼:

<html> 
    <head> 
    <script language="javascript" type="text/javascript"> 
    <!-- 
     var ajax = new XMLHttpRequest(); 

     function pingSite() { 
      ajax.onreadystatechange = stateChanged; 
      ajax.open('GET', document.getElementById('siteToCheck').value, true); 
      ajax.send(null); 
     } 

     function stateChanged() { 
      if (ajax.readyState == 4) { 
       if (ajax.status == 200) { 
       document.getElementById('statusLabel').innerHTML = "Success!"; 
       } 
       else { 
       document.getElementById('statusLabel').innerHTML = "Failure!"; 
       } 
      } 
     } 
    --> 
    </script> 
    </head> 

    <body> 
    Site To Check:<br /> 
    <input type="text" id="siteToCheck" /><input type="button" onclick="javascript:pingSite()" /> 

    <p> 
     <span id="statusLabel"></span> 
    </p> 
    </body> 

回答

0

您本身不能使用JavaScript來解析外部域,我用它嗅着內容,將其提供給Ajax回調的代理頁。

我的解決方案基本上抓住了網站的來源來檢查,看看一個字符串,可以是您的網站鏈接匹配。我認爲這應該是足夠的,而不是試圖解析和尋找錨點,但是你可以儘可能地徹底(把整個東西解析爲DOM元素並尋找href屬性值)。

讓我知道你是否遇到過任何問題。

<?php 
    $query = isset($_POST['submitted']) ? true : false; 
    if ($query) { 
    $url = @file_get_contents($_POST['site-url']); 
    if ($url && strlen($url) > 0) { 
     $checkFor = $_POST['check-for']; 
     $match = preg_match('/' . $checkFor . '/', $url); 
     echo $match ? 'string (link) is found' : 'string not found'; 
    } else { 
     echo 'could not connect to site..'; 
    } 
    exit; 
    } 
?> 
<form action="" id="site-checker"> 
    <div class="field"> 
    <label for="site-url">Site to check:</label> 
    <input id="site-url" name="site-url" value="http://jquery.com"> 
    </div> 
    <div class="field"> 
    <label for="check-for">Check for:</label> 
    <input id="check-for" name="check-for" value="docs.jquery.com"> 
    </div> 
    <input type="hidden" name="submitted" value="true"> 
    <input type="submit"> 
</form> 

<div id="result"></div> 

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.3/jquery.min.js"></script> 
<script> 
    $('#site-checker').submit(function(e) { 
    e.preventDefault(); 
    $.ajax({ 
     url:'check.php', 
     type:'POST', 
     data:$('#site-checker').serialize(), 
     success:function(html) { 
     $('#result').html(html); 
     } 
    }); 
    }); 
</script> 
+0

我試過了你的溶劑藥,但我沒有顯示底片或正片。你知道爲什麼嗎?看起來沒有什麼事情發生。 – Chris

+0

我是否明確刪除了您的Meder的其他帖子? – Chris

+0

您可以發佈更多關於您嘗試的信息嗎?這在我的本地Apache服務器上工作*很好*。 –

0

恕我直言,最好在服務器端腳本中執行此任務。根據您的平臺,可能會有功能發送HTTP請求和HTML解析,這是您在這裏需要的。 JavaScript有跨域限制,這將阻止你發送一個Ajax請求到不同的域,而不是託管網頁的域。

+0

你能舉個例子嗎? – Chris

+0

什麼語言/平臺? –

+0

Ajax例如?在梅德做的事情? – Chris