0

我正在尝试在http://rate-exchange.appspot.com/currency上使用该服务,但我得到的只是 Access-Control-Allow-Origin 错误。

了解这是一个服务器问题,并且http://rate-exchange.appspot.com/currency不是我的服务,我不知道如何解决这个问题。

使用这样的服务:

$.getJSON("http://rate-exchange.appspot.com/currency", { "from": Currency.From, "to": Currency.To }, function (result) {
    if (!result.err) {
        Currency.Rate = result.rate;
        $("#footer-output").text("All sales in " + Currency.To + " including VAT");
    }
    else {
        $("#footer-output").text("All sales in local currency including VAT");
    }
});

现在尝试直接在我的浏览器中获取这些数据不是问题。有什么我可以做的,还是只能在服务器上修复?

4

2 回答 2

2

以下将起作用。我冒昧地在代码中添加了一个货币对象。这部分显然是你在别处定义的。

Plunkr: http ://beta.plnkr.co/aMVPVE9kUPPcsD0Ma5s3

代码:

$(function(){
 Currency = {};
 Currency.From = "USD";
 Currency.To = "PEN";
 Currency.Rate= 0;
 $.getJSON("http://rate-exchange.appspot.com/currency?callback=?", { "from": Currency.From, "to": Currency.To }, function (result) {
    if (!result.err) {
        Currency.Rate = result.rate;
        $("#footer-output").text("All sales in " + Currency.To + " including VAT");
    }
    else {
        $("#footer-output").text("All sales in local currency including VAT");
    }
});

添加回调=?到 url 和 jquery 将发出一个 jsonp 请求。这是文档中的部分(中途): http ://api.jquery.com/jQuery.getJSON/

JSONP

如果 URL 包含字符串“callback=?” (或类似的,由服务器端 API 定义),请求被视为 JSONP。有关详细信息,请参阅 $.ajax() 中对 jsonp 数据类型的讨论。

于 2013-04-05T13:18:41.173 回答
1

使用 JSONP:

Currency = {};
Currency.From = "USD";
Currency.To = "PEN";
Currency.Rate= 0;   
$.get("http://rate-exchange.appspot.com/currency", { "from": Currency.From, "to": Currency.To }, function (result) {
    if (!result.err) {
        Currency.Rate = result.rate;
        $("#footer-output").text("All sales in " + Currency.To + " including VAT");
    }
    else {
        $("#footer-output").text("All sales in local currency including VAT");
    }
}, 'jsonp');

演示

于 2013-04-05T13:21:55.147 回答