Получить значение из строки JSON из API калькулятора Google

Я нашел этот пост о конвертации валют.
Я новичок в 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

URL работает в браузере, поэтому я попытался отправить вызов 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, пожалуйста.

2 ответа

Решение

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();

создание подкласса Request.JSONP в MooTools-more для добавления из / в / amount и использования http://rate-exchange.appspot.com/ api для google, который исправляет их json (те же данные).

Выше в действии на jsfiddle (посмотрите на консоль): http://jsfiddle.net/bBHsW/

Вы также можете использовать http://finance.yahoo.com/ и получить CSV и т. Д.

Вы должны сделать бэкэнд, который общается с Google API. Затем вы можете сделать запрос AJAX к своему бэкэнду.

Вы не можете сделать запрос AJAX напрямую в Google API.

Смотрите: https://developer.mozilla.org/en/docs/HTTP/Access_control_CORS

Другие вопросы по тегам