如果我只有另一个网页的链接(从此网页获取html内容),如何将解析后的html内容插入到我的网页中。我正在使用ajax调用,我收到错误,我写下面的代码。浏览器不是问题 我希望它在Facebook中,但不是在PHP
<script>
jQuery.support.cors = true;
$.ajax({
type:"GET",
url:"http://www.hotscripts.com/forums/javascript/3875-how-read-web-page-content-variable.html",
dataType:"html",
crossDomain:true,
beforeSend: function(xhr)
{
xhr.overrideMimeType('text/plain; charset=UTF-8');
},
success:function(data) {
alert(data);
$("body").html(data);
},
error:function(errorStatus,xhr) {
alert("Error",errorStatus,xhr);
}
});
</script>
答案 0 :(得分:0)
可能是您的浏览器不支持cors。 http://caniuse.com/cors或其他域不发送回Access-Control-Allow-Origin标头。 感谢Quentin的评论。 另一种选择是使用jSONP。
<script>
var query = "http://query.yahooapis.com/v1/public/yql?q=" +
encodeURIComponent("SELECT * FROM html WHERE url = 'http://www.hotscripts.com/forums/javascript/3875-how-read-web-page-content-variable.html'") +
"&format=json";
$.ajax({
type:"GET",
url: query,
crossDomain:true,
beforeSend: function(xhr)
{
xhr.overrideMimeType('text/plain; charset=UTF-8');
},
success:function(data) {
alert(data);
},
error:function(errorStatus,xhr) {
alert("Error",errorStatus,xhr);
}
});
</script>
第三个选项是通过您域中的代理脚本发出请求。
回复: “我使用过jQuery.support.cors = true;还有一个问题” 正如我所说,服务器应该返回必要的标题。 如果对方不允许它变得无所事事就可以做到。 检查一下:
http://en.wikipedia.org/wiki/Cross-origin_resource_sharing
要启动跨源请求,浏览器会使用Origin HTTP标头发送请求。此标头的值是为页面提供服务的域。例如,假设来自http://www.example-social-network.com的页面尝试访问online-personal-calendar.com中的用户数据。如果用户的浏览器实现了CORS,则会将以下请求标头发送到online-personal-calendar.com:
Origin: http://www.example-social-network.com
如果online-personal-calendar.com允许该请求,它会在其响应中发送一个Access-Control-Allow-Origin标头。标头的值指示允许的源站点。例如,对先前请求的响应将包含以下内容:
Access-Control-Allow-Origin:http://www.example-social-network.com
如果服务器不允许跨源请求,浏览器将向example-social-network.com页面发送错误,而不是online-personal-calendar.com响应。
要允许所有域的访问,服务器可以发送以下响应头:
Access-Control-Allow-Origin: *
这通常不合适。唯一适用的情况是,页面或API响应被视为完全公开内容,并且每个人都可以访问它,包括任何网站上的任何代码。
“*”的值很特殊,因为它不允许请求提供凭据,即HTTP身份验证,客户端SSL证书,也不允许发送cookie