博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Ajax跨域访问XML数据的另一种方式——使用YQL查询语句
阅读量:7125 次
发布时间:2019-06-28

本文共 1205 字,大约阅读时间需要 4 分钟。

  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来访问数据。是提供的一套Web Service服务,通过它你可以像SQL语句一样访问互联网上的任何数据,而不存在跨域的问题。

//sample site that returns xmlvar 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个请求,可以查看官网的介绍

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

转载地址:http://vvhel.baihongyu.com/

你可能感兴趣的文章
《FPGA全程进阶---实战演练》第十四章 蜂鸣器操作
查看>>
浅析firmware完整生存和使用流程 【转】
查看>>
《30天自制操作系统》笔记(01)——hello bitzhuwei’s OS!【转】
查看>>
MMU介绍【转】
查看>>
构造函数
查看>>
利用自定义DataTable来重画数据集的用法
查看>>
职场沟通技巧
查看>>
Python爬虫——解决urlretrieve下载不完整问题且避免用时过长
查看>>
如何区分云计算和非云计算,首先得看它的核心本质——计算是否在线,计算的使用是否通过互联网完成。我从在阿里巴巴做云计算的第一天开始,就告诉自己:“云计算是一个社会最基础的公共服务,就像电一样。”...
查看>>
动态数据交换(DDE, Dynamic Data Exchange)简介
查看>>
【线性规划与网络流24题】8-11 航空路线问题
查看>>
死循环之----恐怖游轮
查看>>
telnet模拟邮件发送
查看>>
IntelliJ IDEA快速创建属性字段的get和set方法
查看>>
Guid string 转换
查看>>
PHPExcel 设置表格边框
查看>>
Servlet-session简介及使用场景
查看>>
第六次课程作业
查看>>
Android Frame动画demo
查看>>
ABP源码分析十五:ABP中的实用扩展方法
查看>>