通过ajax调用将网页内容访问到当前网页

时间:2013-10-15 08:43:32

标签: javascript jquery html ajax

如果我只有另一个网页的链接(从此网页获取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>

1 个答案:

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