你的位置:首页 > Java教程

[Java教程]Ajax跨域访问XML数据的另一种方式——使用YQL查询语句


  JQuery.getJSON()方法在回调函数中就可以获取到返回的结果。如果要使用JSONP,可以在指定的URL后面附加查询参数"&callback=?"。

$(document).ready(function() { $.getJSON("http://www.example.com/getdata", function(data) { console.log(data); })});

$(document).ready(function() { $.getJSON("http://www.example.com/getdata2?callback=?", function(data) { console.log(data); })});

  除此之外,我们还可以借助于第三方平台提供的API来访问数据。YQL是Yahoo!提供的一套Web Service服务,通过它你可以像SQL语句一样访问互联网上的任何数据,而不存在跨域的问题。

//sample site that returns var site = 'http://feed.cnblogs.com/blog/u/53608/rss';var yql = 'http://query.yahooapis.com/v1/public/yql?q=' + encodeURIComponent('select * from ;// Request that YSQL string, and run a callback function.// Pass a defined function to prevent cache-busting.$.getJSON(yql, function (data) {  console.log(data.results[0]);});

  YQL API的公共访问限制是同一IP每小时2000个请求,可以查看官网的介绍https://developer.yahoo.com/yql/guide/usage_info_limits.html

  不过个人认为这种方法依然只是一个临时解决方案,对于一套完整的Web应用而言,过多地依赖于第三方系统会直接导致系统的稳定性和扩展性,而且会有较大的风险。试想,如果Yahoo!修改了Web Services的接口或者停止了YQL的公共访问,那么系统中所有依赖于YQL的部分都会出现问题。