$ .get不返回html

时间:2012-05-24 12:22:07

标签: php javascript jquery ajax facebook

我的简单代码

<!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)); 
?>

为什么不删除标签?

4 个答案:

答案 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/