2017-04-11 74 views
0

我需要在一個跨度內,在一個div內,在一個div內,在另一個網站(跨域)中找到文本
經過數小時和數小時的研究,我仍然無法獲得任何工作。截至目前,這是我有:如何從使用jQuery的其他網站獲取指定的文本?

<head> 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.0/jquery.min.js"></script> 
</head> 
<body> 
    <div id="thisdiv"></div> 
    <script> 
     $.get("http://landnstemacademy.blogspot.com/", function(data) { 
     $("#Blog1") 
     $("span:contains('Quote of the day')") 
      .contents() 
       .filter(function(){ 
        return this.nodeType !== 3; 
       }) 
      .clone().prependTo("#thisdiv"); 
     } 
    </script> 
</body> 

我很新jQuery的,所以請原諒我,如果我的方式偏離了軌道。任何幫助都非常感謝。

此外,有沒有什麼辦法可以指定「指定元素之後的元素」?我需要在此之後獲取元素的內容,但它不是唯一的。

如果需要的話,該網站是http://landnstemacademy.blogspot.com/

編輯:我相信我可能已經讀過的地方,某種涉及JSON方法可以避開這些「反跨域」的規則。在這裏工作?可以得到文本嗎?我還想指出,如果所有可能的,我想約束所有的代碼到一個文件(沒有額外的文件文件的PHP),但我明白,如果這使得它太難/不可能出於任何原因。再次感謝你。

+0

如果域不設置,則不能允許跨源策略。更多https://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS –

+0

您可以通過改變現有的代碼,將通過一個特殊的CORS代理請求,而不是發送請求繞過CORS限制直接到網站(如你的代碼現在所做的那樣)。有使用'$獲得(...)相關的代碼示例'在https://stackoverflow.com/questions/43314070/google-news-api-gives-an-error-uncaught-syntaxerror-unexpected-token/43314425#43314425另請參閱https:// stackoverflow。com/questions/20035101/no-access-control-allow-origin-header-is-present-on-the-requested-resource/42744707#42744707更多詳情 – sideshowbarker

回答

0

由於跨源資源共享CORS機制,您不允許從您的域訪問網站內容。

這種機制在那裏形成一些安全原因來防止攻擊,如clickjacking

如果您嘗試運行你的要求,你會得到下面的錯誤,所以你的問題是不是擺在首位的jQuery。

XMLHttpRequest無法加載http://landnstemacademy.blogspot.com/。否 「訪問控制 - 允許來源」標題出現在請求的 資源中。因此不允許原產地'null'訪問。

然後只有當您試圖從中獲取數據的網站允許跨網站訪問時,使用Access-Control-Allow-Origin: * http標頭提供您的請求響應時,您只能訪問此數據。

+0

如果我要創建一個blogspot頁面(因爲頁面我試圖訪問的是一個blogspot頁面),將html代碼添加到我的頁面,然後在我的原始網站中創建blogspot頁面的iframe? –

+0

這屬於同一範圍內的老兄,它也會阻止你出於同樣的原因。 – KAD

+0

好的拍攝...在這一點上好吧,我可以做的唯一事情就是詢問該網站的編輯是否可以添加一個頁面到他們的blogspot網站,其中包含$ .get代碼,然後在我的網站上創建一個iframe結束,對吧?這可能有用嗎?我不願意爲你拖延這一點,但不管信不信,讓這個工作能夠在一年中爲我節省很多時間(最終還有許多人)。 –

0

您可以使用這樣的事情:

的Jquery:

$.ajax({ 
    url  : 'ajax/get_random_quotes.php', 
    method : 'get', 
    success : function(response) 
    { 
     var data = JSON.parse(response); 
     // You can use response like data.col1 or data.col2 
    } 
}); 

PHP的:get_random_quotes.php

$url = "http://quotes.stormconsultancy.co.uk/random.json"; 
$ch = curl_init($url); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
$response = curl_exec($ch); 
curl_close($ch); 
echo $response; 
exit; 

注:不允許您從您的域名訪問網站內容由於跨源資源共享CORS機制。所以ajax()單獨是不足以執行您的任務,您必須使用CURL

相關問題