我发现有关货币转换的 this SO帖子 我是JSON的新手,所以我的问题是如何将这个url的结果发送到变量?
http://www.google.com/ig/calculator?hl=en&q=100GBP=?EUR
//this url above gives back this line under
{lhs: "100 British pounds",rhs: "115.538154 Euros",error: "",icc: true} //answer html
网址在浏览器上工作,所以我尝试通过ajax调用发送但是出现了这个错误。
405 (Method Not Allowed)
Origin http://www.mysite.com is not allowed by Access-Control-Allow-Origin.
我的阿贾克斯:
var req = new Request({
method: 'post',
url: 'http://www.google.com/ig/calculator?hl=en&q=100GBP=?EUR',
onSuccess: function(response) {
console.log(response);
}
}).send();
我正在使用mootools,所以请不要使用jQuery。
答案 0 :(得分:3)
此处的Google API不会返回有效的JSONP(在响应键中缺少“并且它不喜欢CORS。请使用'代码自己的代理'或使用其他人的代码:
{lhs: "100 British pounds",rhs: "115.538154 Euros",error: "",icc: true}
正确的回答是:
{"lhs": "100 British pounds", "rhs": "115.538154 Euros", "error": "","icc": true}
这个替代方案很好:
Request.exchange = new Class({
Extends: Request.JSONP,
options: {
url: 'http://rate-exchange.appspot.com/currency?from={from}&to={to}&q={amount}',
amount: 1
},
initialize: function(options){
this.setOptions(options);
this.options.url = this.options.url.substitute(this.options);
this.parent();
}
});
new Request.exchange({
from: 'GBP',
to: 'JPY',
amount: '100',
onSuccess: function(response) {
console.log(response, response.rate, response.v);
}
}).send();
继承MooTools-more的Request.JSONP以从/ to / amount添加并使用http://rate-exchange.appspot.com api来修复他们的json(相同的数据)。
上面对jsfiddle的行动(看看控制台):http://jsfiddle.net/bBHsW/
您也可以使用http://finance.yahoo.com/并获取csv等
答案 1 :(得分:0)
您必须制作与Google API对话的后端。 然后你可以向你的后端发出ajax请求。
您无法直接在Google API上执行ajax请求。
请参阅:https://developer.mozilla.org/en/docs/HTTP/Access_control_CORS