2013-02-21 160 views
11

是否可以從外部網站加載單個頁面?jQuery加載外部網站頁面

我想顯示一個頁面,但似乎無法得到它的工作

$("#response").load("http://domain.com", function(response, status, xhr) { 
    if (status == "error") { 
     var msg = "Sorry but there was an error: "; 
     alert(msg + xhr.status + " " + xhr.statusText); 
    } 
}); 

幫助將不勝感激

+1

是的,這是可能的,但你需要1行PHP :) – 2013-02-21 10:12:58

+0

這裏看看 - http://en.wikipedia.org/ wiki/Cross-origin_resource_sharing和這裏http://msdn.microsoft.com/en-us/library/windows/apps/hh767443.aspx – Bakudan 2013-02-21 10:17:33

+0

如果你只需要RSS提要,你不介意依靠谷歌,你可以使用[ jQuery的飼料](https://github.com/camagu/jquery-feeds/)。 – guaka 2014-10-25 20:10:52

回答

19

您正在運行到跨域策略問題的原因AJAX(出於安全原因)不會讓你從不在同一個域上的頁面抓取內容。

要擺脫它,完成你的任務:
你需要一個PHP文件,你可以調用grabber.php只此行PHP的:

<?php echo file_get_contents($_GET['url']); ?> 

比你的HTML中(或任何文件只是做像:)

<!DOCTYPE html> 
<html> 
<head> 
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script> 
    <meta charset=utf-8 /> 
    <title>test</title> 
</head> 
<body> 

    <div id="response"></div> 

</body> 

<script> 
$(function(){ 
    var contentURI= 'http://domain.com #element'; // URL TO GRAB + # of any desired element // if needed :) 
    $('#response').load('grabber.php?url='+ contentURI); 
}); 
</script> 

</html> 

爲什麼這樣嗎?

  • 現在,Ajax是發送一個簡單的GET請求grabber.php頁面,
  • grabber.php呼應所需內容
  • 現在的內容是你的(服務器)域!
  • 和AJAX是竭誠爲您服務:)
+1

這很棒。一個問題,但。我注意到許多網站一旦拉動它就會失去絕對路徑。你知道任何提示來拉動頁面並保持原樣嗎? – andehlu 2014-03-05 04:14:37

+1

@andehlu你可以將加載的內容添加到iframe中,這應該保持路徑的順序。 – 2016-07-24 17:44:10

+0

@WessamElMahdy如果你只是想欣賞加載的頁面,或者你想用加載的元素實際做一些東西,就會依賴於它...... – 2016-07-24 19:21:30

0

你想在不同的域中加載一個頁面?

如果是的話,好像你有你的方式跨域策略...

相關問題