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,如需转载请自行联系原作者

相关文章
|
15天前
|
XML Java 数据库连接
mybatis中在xml文件中通用查询结果列如何使用
mybatis中在xml文件中通用查询结果列如何使用
16 0
|
1月前
|
XML 前端开发 数据格式
请描述如何使用`BeautifulSoup`或其他类似的库来解析 HTML 或 XML 数据。
【2月更文挑战第22天】【2月更文挑战第67篇】请描述如何使用`BeautifulSoup`或其他类似的库来解析 HTML 或 XML 数据。
|
1月前
|
Web App开发 JSON 前端开发
Ajax实现动态及时刷新表格数据
Ajax实现动态及时刷新表格数据
35 1
|
2月前
|
XML 机器学习/深度学习 JSON
在火狐浏览器调ajax获取json数据时,控制台提示“XML 解析错误:格式不佳”。
在火狐浏览器调ajax获取json数据时,控制台提示“XML 解析错误:格式不佳”。
29 0
在火狐浏览器调ajax获取json数据时,控制台提示“XML 解析错误:格式不佳”。
|
1月前
|
Java 数据库连接 mybatis
Mybatis+mysql动态分页查询数据案例——Mybatis的配置文件(mybatis-config.xml)
Mybatis+mysql动态分页查询数据案例——Mybatis的配置文件(mybatis-config.xml)
20 1
|
1月前
Mybatis+mysql动态分页查询数据案例——配置映射文件(HouseDaoMapper.xml)
Mybatis+mysql动态分页查询数据案例——配置映射文件(HouseDaoMapper.xml)
15 1
|
1月前
|
JSON 前端开发 数据格式
Ajax传递json数据
Ajax传递json数据
11 0
|
1月前
|
XML 开发框架 .NET
C# .NET面试系列八:ADO.NET、XML、HTTP、AJAX、WebService
## 第二部分:ADO.NET、XML、HTTP、AJAX、WebService #### 1. .NET 和 C# 有什么区别? .NET(通用语言运行时): ```c# 定义:.NET 是一个软件开发框架,提供了一个通用的运行时环境,用于在不同的编程语言中执行代码。 作用:它为多语言支持提供了一个统一的平台,允许不同的语言共享类库和其他资源。.NET 包括 Common Language Runtime (CLR)、基础类库(BCL)和其他工具。 ``` C#(C Sharp): ```c# 定义: C# 是一种由微软设计的面向对象的编程语言,专门为.NET 平台开发而创建。 作
174 2
|
2月前
|
数据采集 前端开发 JavaScript
Python爬虫之Ajax数据爬取基本原理#6
Ajax数据爬取原理【2月更文挑战第19天】
32 1
Python爬虫之Ajax数据爬取基本原理#6
|
XML 前端开发 应用服务中间件
Ajax方式发送XML及接收xml响应实例
本文介绍通过bbossgroups 的mvc框架实现Ajax方式发送XML数据及接收xml响应实例,切入正题。 本文分两部分: 1.Ajax方式发送XML数据及xml响应的接收demo的下载和部署 2.
759 0