开发者社区> 浣熊干面包> 正文

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

简介:
+关注继续查看

XML数据默认是不能在客户端通过Ajax跨域请求读取的,一般的做法是在服务器上写一个简单的代理程序,将远程XML的数据先读到本地服务器,然后客户端再从本地服务器通过Ajax来请求。由于我们不能对数据源所在的环境进行任何设置和修改,所以仅通过客户端代码很难绕过这个问题。但如果请求的数据不是XML而是JSON对象或者JavaScript函数,则通过JSONP方法可以非常容易地解决,直接调用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来访问数据。YQLYahoo!提供的一套Web Service服务,通过它你可以像SQL语句一样访问互联网上的任何数据,而不存在跨域的问题。

复制代码
//sample site that returns xml
var site = 'http://feed.cnblogs.com/blog/u/53608/rss';


var yql = 'http://query.yahooapis.com/v1/public/yql?q=' + encodeURIComponent('select * from xml where url="' + site + '"') + '&format=xml&callback=?';

// 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的部分都会出现问题。


本文转自Jaxu博客园博客,原文链接:http://www.cnblogs.com/jaxu/p/4504929.html,如需转载请自行联系原作者

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
MySQL如何处理XML数据?底层原理是什么?
MySQL如何处理XML数据?底层原理是什么?
63 0
ajax请求json和xml数据及对json和xml格式数据的解析
ajax请求json和xml数据及对json和xml格式数据的解析
79 0
Spring-Batch读取数据 文本数据 数据库数据 XML数据 JSON数据
Spring-Batch读取数据 文本数据 数据库数据 XML数据 JSON数据
120 0
Spring Batch输出文本数据 XML数据 JSON数据 数据库
Spring Batch输出文本数据 XML数据 JSON数据 数据库
107 0
建造者模式实例数据拼接 java生成真实XML文件
建造者模式实例数据拼接 java生成真实XML文件
55 0
XML转CSV读取对应所有数据(tkinter工具)
代码段:处理xml标签和标签名的数据读取
43 0
JAVA如何监听XML文件?并处理数据
本文主要的内容,就是讲述,第三方客户端,在指定的文件夹生成了对应的xml文件,java程序需要监听对应的文件夹,并解析xml文件内容,转成javaBean,主要使用到了xjc生成对应的实体类,在经过监听文件变化,加载xml数据,转换成对应的bean实例,采用的技术有Spring boot、XJC、commons-io
109 0
记录python爬某文化交易遇到的问题xml转json读出单个数据
记录python爬某文化交易遇到的问题xml转json读出单个数据
35 0
【SSM面向CRUD编程专栏 1】Spring简介 xml配置文件 依赖注入 数据注入(四)
【SSM面向CRUD编程专栏 1】Spring简介 xml配置文件 依赖注入 数据注入(四)
55 0
【SSM面向CRUD编程专栏 1】Spring简介 xml配置文件 依赖注入 数据注入(三)
【SSM面向CRUD编程专栏 1】Spring简介 xml配置文件 依赖注入 数据注入(三)
63 0
+关注
浣熊干面包
文章
问答
视频
文章排行榜
最热
最新
相关课程
更多
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载