阅读文档http://openexchangerates.github.io/money.js/#fx.rates 它说您需要设置费率:
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 api:
// 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文件里面,在底部还是顶部? - 或者请告诉我这里出错的地方
答案 0 :(得分:5)
一旦money.js加载,你应该可以在任何地方重载这个(javascript允许这一般)。
没有足够的细节可以肯定地说,但我的猜测是这是一种常见的竞争条件,因为网络电话是异步的,所以如果你这样做:
-Load Money js
-Call Web call for rates
-Use money.js
当您使用money.js时,您的费率调用尚未返回,因此当您调用它时,您使用的是默认值。如果这是您的问题,您需要在实际设置费率时将代码放入回调中,如下所示:
$.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
});
文档实际上提到了这一点:
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.
答案 1 :(得分:1)
https://openexchangerates.org/documentation#example-javascript-ajax-jquery
JavaScript(AJAX / jQuery)
您可以使用AJAX请求轻松地使用JavaScript将费率加载到应用程序或网站中。我建议使用jQuery,因为它可以为你节省大量的麻烦,从统计学上讲,你可能已经在你的页面/应用程序中使用它了:
// 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请求等待时,程序的其余部分将继续执行。
强调: 如果您要立即运行代码,这取决于可用的汇率,则此代码应位于回调中