我想创建一个可以获取不同网站并从DOM中提取数据的应用程序。我打算在Google Web Toolkit中使用XMLHttpRequest来实现它。但是,由于同源策略,XMLHttpRequest似乎不起作用。
我想知道是否存在支持DOM解析和跨站点Ajax功能的其他应用程序框架?
答案 0 :(得分:0)
jquery和各种类似的dojo,YUI通过hack支持跨浏览器请求。
由于相同的原始策略,您无法向其他域发出Ajax请求,因此要将此类请求作为常用的hack http://en.wikipedia.org/wiki/JSONP
演示以描述功能
Site-1的脚本
function MakeThirdPartyRequest()
{
//make sure this domain returns pure json
var Url="http://SomeOtherDomain.com";
//now using javascript you add this TAG to body of html
<script src="Url" type="text/javascript"></script>
}
function jsonFromThirdParty(data)
{
alert(data);
}
网站2应以此格式返回数据
jsonFromThirdParty("hello iam data from other domain");
您可以使用某些第三方JavaScript库
以下是制作跨域ajax请求的代码
jQuery.ajax({
url:'http://some_domain',
dataType:'jsonp',
type:'get',
success:function(data)
{
alert(data);
}
});
答案 1 :(得分:0)
您可以从其他域下载JSON数据。由于安全性,将无法访问HTML或XML DOM。在这种情况下,我看到两个选项:
您将向页面原始服务器发出请求,该请求将请求代理到实际的Web服务器,从而绕过安全限制。
您可以使用某些服务将HTML或XML转换为JSON。我知道只有http://open.dapper.net/这样做,但你需要首先在页面中手动定义记录,因此它只适用于预定义的页面集,而不是用户输入的URL。但也许有XML到JSON转换器可以转换任何给定的URL。这不难做到。