我的简单代码
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Untitled Document</title>
<script src="jquery.js"></script>
<script type="text/javascript">
$(function(){
$.get("http://www.facebook.com",function(data){
alert(data);});
});</script></head>
<body>
</body>
</html>
它应警告facebook内容,但它没有这样做
更新
现在我使用php
<?php
$str=file_get_contents("http://www.facebook.com");
echo strip_tags(htmlspecialchars($str));
?>
为什么不删除标签?
答案 0 :(得分:4)
我猜你因Same Origin Policy而被浏览器阻止了。请参阅控制台,如果您尝试执行此操作,则会收到警告。
如果没有Cross-Origin Resource Sharing或服务器端代理,则无法读取跨域网页。
据我所知,唯一的方法是让你的域上的服务器脚本 读取外页(wget,curl,fopen,还有其他内容)并返回它到你的页面。您的服务器就像一个“桥梁”来读取远程页面。
您可能听说过JSONP没有跨域限制,但您通过这种方式检索的不是HTML /页面而是脚本。
答案 1 :(得分:4)
如果你在服务器端使用php。您可以使用以下命令创建一个返回html的服务:
$html = file_get_contents('http://www.facebook.com');
ASP.NET:
using(WebClient client = new WebClient())
{
string html = client.DownloadString("http://www.facebook.com'");
}
答案 2 :(得分:3)
除非使用JSONP,否则由于Same Origin Policy,您无法从外部网站请求内容。但是,因为您要求HTML,所以这不适用。
另一种方法是使服务器端代理获取facebook.com主页的HTML,然后将该本地URL提供给$.get()
函数。
答案 3 :(得分:0)
您只能在同一个域中发出ajax请求
但是您可以使用JSONP进行跨域请求 http://en.wikipedia.org/wiki/JSONP
请参阅ibm developerworks上的这篇文章:
http://www.ibm.com/developerworks/library/wa-aj-jsonp1/