2013-02-21 166 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

你想在不同的域中加载一个页面?

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

相关问题