跨服务器域数据拉jQuery..Ajax?

时间:2012-02-07 17:51:51

标签: java jquery ajax cross-domain

是否可以使用jQuery Ajax方法从另一个域(当前不拥有)中提取源数据?如果没有其他方法?

尝试查看是否可以在给定容器(a)的情况下提取指定的:contains标记。更具体地说,在下面的例子中,我想简单地提醒一下有多少4星评级:

$(document).ready(function(){
    $.ajax({
        url: "http://www.google.com/products/seller?hl=en&q=burkett+restaurant+equipment&zmi=basequipment.com&cmi=12986189937115136&sa=X",
        context: document.body,
        dataType: 'html',

        success: function(data){
            var fourStars = $(data).find('a[href*="rate=4"]').text();
            alert(fourStars);       
        }
    });
});

4 个答案:

答案 0 :(得分:0)

除非使用ajax或任何其他黑客攻击,否则无法使用jQuery JSONP方法访问当前域之外的任何资源。

您可以使用YQL和jQuery查看跨域访问。

http://net.tutsplus.com/tutorials/javascript-ajax/quick-tip-cross-domain-ajax-request-with-yql-and-jquery/

答案 1 :(得分:0)

通常我会说将页面加载到iframe并解析,但当您尝试将其加载到iframe时,Google产品会出错:Refused to display document because display forbidden by X-Frame-Options.

您可以考虑使用Google内容API:http://code.google.com/apis/gdata/docs/2.0/reference.html#Queries

答案 2 :(得分:0)

由于same origin policy,您无法直接向Google发送ajax电话。但是,您可以制作一个php文件(或其他脚本文件)并将其用作代理,然后对您的php文件进行ajax调用。

例如,在同一目录中创建一个“ajax.php”文件,其中包含:

<?php
$page = file_get_contents ("http://www.google.com/products/seller?hl=en&q=burkett+restaurant+equipment&zmi=basequipment.com&cmi=12986189937115136&sa=X");
print $page;
?>

然后从您的jQuery代码,将URL更改为:     url:“ajax.php”,

答案 3 :(得分:0)

基本上,你不能这样做,并且有明确的理由。如果您不控制其他站点,您所能做的就是通过您自己的服务器代理请求。

如果您确实控制了其他网站,请为其添加一些JSONP功能(实际上非​​常简单),但请注意不要提供特定于用户的信息,因为它显然也可以被其他所有人使用。 / p>

如果您在说“另一个域(当前未拥有)”时实际上是指Google,则他们会使用JSONP API - 请参阅http://code.google.com/apis/gdata/docs/json.html - json-in-script。