是否可以使用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);
}
});
});
答案 0 :(得分:0)
除非使用ajax
或任何其他黑客攻击,否则无法使用jQuery JSONP
方法访问当前域之外的任何资源。
您可以使用YQL和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。