2012-02-07 68 views
0

是否有可能使用jQuery Ajax方法从另一个域(当前不拥有)提取源数据?如果没有其他方法?跨服务器域数据拉jQuery..Ajax?

试图看看我是否可以为其容器(:contains)指定一个指定的a标签。更具体地在下面的例子中,我想简单地说有多少的四星级评级的警告有:

$(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

您必须使用远程json请参阅http://bob.pythonmac.org/archives/2005/12/05/remote-json-jsonp/ – Devjosh 2012-02-07 17:57:12

+1

在您的服务器上创建一个代理脚本,它可以提取和解析页面来自Google。那么你就可以从服务器上获取数据。 – 2012-02-07 18:01:32

回答

0

您不能直接调用Ajax谷歌因same origin policy。但是,您可以创建一个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更改为: 网址: “ajax.php”

0

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

如果你确实控制了其他站点,那么添加一些JSONP功能(实际上很简单),但要小心不要给出用户特定的信息,因为显然它也可以被其他人使用。

如果您在说“另一个域(目前不拥有)”时确实表示Google,那么他们有一个JSONP API - 请参阅http://code.google.com/apis/gdata/docs/json.html - json-in-script。

+0

我的意思是Google = p – ToddN 2012-02-07 18:41:35