jQuery + JSONP + 雅虎查询语言

2024-04-18

我想从外部来源获取实时汇率,所以我找到了这个很棒的网络服务:

该服务运行得非常出色,唯一的缺点是它不提供 JSONP 结果,仅提供 XML。因此,在尝试使用 jQuery $.ajax() 使用此 Web 服务时,我们遇到了跨浏览器问题。

所以我发现雅虎查询语言 http://developer.yahoo.com/yql它以 JSONP 形式返回结果,并且还 mangae 来使用其他 Web 服务并向我返回结果。这也有效,下面是一个示例 URL:

http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20xml%20where%20url%3D'http%3A%2F%2Fwww.webservicex.net%2FCurrencyConvertor.asmx%2FConversionRate%3FFromCurrency%3DNOK%26ToCurrency%3DEUR'&format=json&diagnostics=true&callback=cbfunc

此 URL 返回 JSONP 结果并且工作起来就像一个魅力,但当我在代码中使用它时出现问题:

$.ajax({
  type: "GET",
  url: urlToWebservice,
  contentType: "application/json; charset=utf-8",
  dataType: "jsonp",
  success: function(data) {
    $("#status").html("OK: " + data.text);
  },
  error: function(xhr, textStatus, errorThrown) {
    $("#status").html("Unavailable: " + textStatus);
  }
});

当我尝试运行此代码时,没有任何反应,并且我可以在我的 Firebug javascript 调试器中看到此错误消息:

cbfunc is not defined

cbfunc 是包围 JSON 响应的容器的名称,但为什么它说未定义?

EDIT:

这是我的新代码,但我仍然得到cbfunc is not defined

$.ajax({
  url: "http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20xml%20where%20url%3D'http%3A%2F%2Fwww.webservicex.net%2FCurrencyConvertor.asmx%2FConversionRate%3FFromCurrency%3DNOK%26ToCurrency%3DEUR'&format=json&callback=cbfunc",
  dataType: 'jsonp',
  jsonp: 'callback',
  jsonpCallback: 'cbfunc'
});

function cbfunc(data) {
  alert("OK");
}

并且“OK”消息永远不会被触发......


如果可用,请使用jsonpCallback调用中的参数$.ajax like:

 jsonpCallback: "cbfunc",

它的描述,来自jQuery API 文档 http://api.jquery.com/jQuery.ajax/ reads:

指定 jsonp 请求的回调函数名称。将使用该值代替 jQuery 自动生成的随机名称。

文档后来继续说:

最好让 jQuery 生成一个唯一的名称,因为这样可以更轻松地管理请求并提供回调和错误处理。当您想要启用更好的 GET 请求浏览器缓存时,您可能需要指定回调。

然而它是not建议在使用 YQL 时使用这种“首选”行为。确切地说,为什么这种方法不理想可能会使这个答案过于冗长,因此这里有一个链接(来自 YQL 博客),详细介绍了 jQuery 首选方法的问题,利用jsonpCallback等等:避免 YQL 和管道中的速率限制和被禁止:缓存是你的朋友 http://www.yqlblog.net/blog/2010/03/12/avoiding-rate-limits-and-getting-banned-in-yql-and-pipes-caching-is-your-friend/

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

jQuery + JSONP + 雅虎查询语言 的相关文章

随机推荐

  • Impala 表中的压缩

    我想了解 Impala 表中的压缩 但找不到可供研究的材料 有哪些不同的技术以及我在哪里可以找到研究它的材料 主要技术为compaction是为了避免small file problem这取决于您的用例 例如 您可能有一个将小文件写入的进程
  • 函数式 GUI 编程可能吗? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我最近发现了 FP bug 试图学习 Haskell 到目前为止所看到的东西给我留下了深刻的印象 一流的函数 惰性求值和所有其他好处 我还不是专
  • Jfrog CLI 不尊重配置的 API 密钥

    我正在使用 Powershell DSC 设置 Windows Server 2012 R2 盒子 作为配置过程的一部分 我将配置 jfrog exe 并作为服务帐户执行配置命令 jfrog rt config url localArtif
  • 读取 WCF 消息正文两次 - “消息无法读取”

    我有一个 WCF 消息 Channels Message 我正在尝试使用 GetBody 提取正文 但是 我注意到我只能执行一次 如果我尝试再次使用 GetBody 我会收到 此消息无法支持该操作 因为它已被读取 知道如何重新阅读邮件正文吗
  • F# 有异步验证库吗?

    我在代码中经常使用 asyncResult 但它会在第一个错误时退出 asyncResult let a allGood let b thisReturnsError let c neverExecuted 但有时我想执行所有函数并总结错误
  • 具有多个条件的 SqlAlchemy 案例

    我正在尝试做这样的事情 x db session query Candidate func count case Jobs interview type PHONE SCREEN and Jobs interview type INCLIN
  • 补丁优先级及其对 Criminsi 基于范例的修复的影响

    我正在尝试实现基于示例的修复 如提议的Criminsi http research microsoft com pubs 67276 criminisi tip2004 pdf等等人 以其原始格式 在进行进一步优化之前 我有一些理论上的疑问
  • 从BackgroundWorker C# 更改控件的属性

    我正在尝试从目录加载一堆文件 在加载时显示进度条状态以及显示正在处理哪个文件的标签 private void FileWorker DoWork object sender DoWorkEventArgs e for int i 0 i l
  • 从 URL 加载图像

    我正在尝试根据以下教程在我的应用程序中加载一些图像 http www anddev org novice tutorials f8 imageview with loading spinner t49439 html http www an
  • NSIS 滚动许可证欢迎屏幕

    我的安装程序在与滚动许可证插件交互时遇到问题 安装程序在没有插件的情况下也能很好地工作 这就是插件让我包括的内容 include MUI nsh define MUI PAGE CUSTOMFUNCTION SHOW LicenseShow
  • 如何限制循环的迭代次数?

    假设我有一个项目列表 我想迭代其中的前几个 items list range 10 I mean this to represent any kind of iterable limit 5 简单的实现 来自其他语言的 Python 新手可
  • 从 Octave 导出的图中具有透明背景

    我在 Win 10 下使用便携式 Octave 5 1 0 我的意思是写一个具有透明背景的 png 绘图 免责声明 这个问题与下面链接的两个问题类似 我选择了提出当前不同的问题 https meta stackoverflow com qu
  • GCE - HTTP 负载平衡返回错误 502(错误网关) - 仅当通过 C# 发布时

    我们有一个 C 应用程序 可以获取数据并将其发布到我们的网站 在使用 Compute Engine 测试 HTTP 负载平衡时 我们遇到的唯一问题是当 C 应用程序尝试提交数据时返回 502 Bad Gateway HTTP 负载平衡中是否
  • 将名字和姓氏添加到 Django-Registration

    我使用的是默认的Djangoregistration 版本 0 8 在我的项目中 用户只需输入他们的用户名 电子邮件和密码 但是 我希望用户也在注册页面上输入他们的名字和姓氏 我怎样才能轻松做到这一点 您可以做的是覆盖默认的 UserReg
  • numpy reshape 是如何工作的?

    我有一个 numpy 数组中的数据 a np arange 100 a a reshape 20 5 当我打字时 a 10 它返回 array 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 1
  • 为什么 sscanf() 不将 CSV 文件中的行读入数组?

    我正在尝试将 CSV 文件中的整数读入二维数组 这是我的代码 FILE fp fopen argv 1 r int counter 0 char line 50 while fgets line 50 fp counter int arry
  • msscript.ocx 从哪里安装

    我在我的应用程序中使用 msscript ocx 它是 Windows 的 ActiveX 脚本主机 尽管我希望能够对高度可定制的 XP 嵌入式 XPe 使用相同的功能 1 我想知道在XPe上是否可以选择性安装msscript ocx 2
  • 为什么我的 Android 应用程序(具有 root 权限)无法访问 /dev/input?

    我的应用程序针对已root的Android设备 它具有root权限并且需要访问该目录 dev input 但为什么它会抛出opendir failed Permission denied even dev input已经是chmod to
  • 读取 bash 脚本中 psql 返回的错误

    我需要在从 bash 脚本运行 psql 时检查错误 这是我们如何在脚本中运行的示例 return value psql X POSTGRES CONNECTION STRING f build table sql w b A q t ps
  • jQuery + JSONP + 雅虎查询语言

    我想从外部来源获取实时汇率 所以我找到了这个很棒的网络服务 该服务运行得非常出色 唯一的缺点是它不提供 JSONP 结果 仅提供 XML 因此 在尝试使用 jQuery ajax 使用此 Web 服务时 我们遇到了跨浏览器问题 所以我发现雅