首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我应该将json结果放在money.js中的哪个位置?

我应该将json结果放在money.js中的哪个位置?
EN

Stack Overflow用户
提问于 2015-05-29 14:08:49
回答 2查看 1.4K关注 0票数 2

阅读文档http://openexchangerates.github.io/money.js/#fx.rates,Its说您需要设置您的费率:

代码语言:javascript
复制
 fx.base = "USD";
fx.rates = {
    "EUR" : 0.745101, // eg. 1 USD === 0.745101 EUR
    "GBP" : 0.647710, // etc...
    "HKD" : 7.781919,
    "USD" : 1,        // always include the base rate (1:1)
    /* etc */
}

我完全明白,只有这些才是静态的。它说要有动态速率,您需要添加json:

代码语言:javascript
复制
// Load exchange rates data via AJAX:
    $.getJSON(
      // NB: using Open Exchange Rates here, but you can use any source!
      'http://openexchangerates.org/api/latest.json?app_id=[I hid this number]', function(data) {
        // Check money.js has finished loading:
        if (typeof fx !== "undefined" && fx.rates) {
          fx.rates = data.rates;
          fx.base = data.base;
        } else {
          // If not, apply to fxSetup global:
          var fxSetup = {
            rates: data.rates,
            base: data.base
          }
        }
      });

但是当我这么做的时候,欧元的汇率没有变化,仍然是0.74。利率不会改变或调整。

在money.js脚本之前或之后将json请求放在哪里?还是在money.js文件中?如果在money.js文件中,在哪里,在底部还是顶部?-或者请告知我在这里出错的地方,

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-05-29 14:27:58

一旦加载了money.js,您应该能够在任何地方重载它(javascript通常允许这样做)。

没有足够的细节可以确定地说,但我猜这是一个常见的争用条件,因为web调用是异步的,所以如果您正在执行这样的操作:

代码语言:javascript
复制
-Load Money js
-Call Web call for rates
-Use money.js

很可能,当您使用money.js时,您的速率调用还没有返回,所以当您调用它时,您使用的是默认值。如果这是您的问题,您需要将代码放在回调中,以便在实际设置费率时使用,如下所示:

代码语言:javascript
复制
$.getJSON(
    // NB: using Open Exchange Rates here, but you can use any source!
    'http://openexchangerates.org/api/latest.json?app_id=[I hid this number]', function(data) {
    // Check money.js has finished loading:
    if (typeof fx !== "undefined" && fx.rates) {
        fx.rates = data.rates;
        fx.base = data.base;
    } else {
        // If not, apply to fxSetup global:
        var fxSetup = {
            rates: data.rates,
            base: data.base
        }
    }
    // YOUR CODE HERE
  });

这些文档实际上提到了以下内容:

代码语言:javascript
复制
You'll need to wait until the AJAX request has completed before you can
begin processing conversions. You may also wish to cache
proximate/historical rates on your server and bootstrap them inline
into the HTML as a backup.
票数 6
EN

Stack Overflow用户

发布于 2015-05-29 14:28:38

https://openexchangerates.org/documentation#example-javascript-ajax-jquery

JavaScript (AJAX / jQuery) 您可以使用AJAX请求轻松地将费率加载到带有JavaScript的应用程序或网站中。我推荐使用jQuery,因为它可以为您节省一吨头痛,而且从统计上说,您可能已经在页面/应用程序中使用了它:

代码语言:javascript
复制
// Use jQuery.ajax to get the latest exchange rates, with JSONP:
$.ajax({
    url: 'http://openexchangerates.org/api/latest.json?app_id=YOUR_APP_ID',
    dataType: 'jsonp',
    success: function(json) {
        // Rates are in `json.rates`
        // Base currency (USD) is `json.base`
        // UNIX Timestamp when rates were collected is in `json.timestamp`

        // If you're using money.js, do this:
        fx.rates = json.rates;
        fx.base = json.base;
    }
});

使用JSONP是可选的- jQuery将在URL中附加一个回调参数,并且响应将被包装在一个函数调用中。这是为了防止访问控制(CORS)问题,并将在许多情况下为您省去一些麻烦,尽管在安全性方面它并不是首当其冲的(实际上,如果您的应用程序中的安全性是首要考虑的话,您应该将结果代理到您自己的服务器上,以100%防止XSS攻击。开放汇率也将很快支持HTTPS。 成功回调是异步的,这意味着如果您有代码要立即运行,这依赖于汇率是可用的,这段代码应该在回调内部。在AJAX请求等待时,程序的其余部分将继续执行。

表示强调:如果您有要立即运行的代码,这取决于可用的汇率,则此代码应该在回调中。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30531765

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档