0

現在の為替レートの JSON データを取得するために、Google API に ajax リクエストを送信しようとしています。

これまでの私のコード:

$.ajax({
    url: "http://www.google.com/ig/calculator?hl=de&q=1USD=?EUR"
}).done( function ( data ) {
    var obj = $.parseJSON( data )
    alert( data.rhs );
});

Google API へのリンクはhttp://www.google.com/ig/calculator?hl=de&q=1USD=?EURです。

私の問題は、コードが関数を起動しないことdoneです。

私は何かが欠けていることを知っています.多分いくつかのパラメータですか?


アップデート

ここに私がどこかで見つけた私の新しいコードがあります:

    function forex(val, from, to, callback) {
        $.ajax({
            url: 'http://www.google.com/ig/calculator?hl=en&q='+val+from+'%3D%3F'+to,
            type: 'GET',
            datatype: 'string',
            success: function(data) {
                var json = eval("(" + data+ ")"), output;
                if (typeof json == 'object' && json.rhs) {
                    output = json.rhs.match(/[0-9.\s]+/ig);
                    output = output[0] || false;
                } else {
                    output = data.match(/[0-9.\s]+/ig);
                    output = output[1] || false;
                }
                output = (output !== false) ? Number(output.replace(/\s/,'')) : output;
                callback(output);
            },
            error: function() {
                callback(false);
            }
        });
    }

    function output(data) {
        alert( data );
        $('#show_product_price_api').val(data);   
    }

しかし、私がこの機能を使用するとき:

forex(100, 'USD', 'EUR', output);

イベントを発生させるには、「FALSE」コールバックを取得します

なぜこのエラー関数が呼び出されるのか??


更新 2

私はそれがクロスドメインの問題だと思います.jsonpを使っている人はいますか?

4

1 に答える 1

1

コードは問題ありません。http://www.google.com/ig/calculator?hl=de&q=1USD=?EURの応答を見てください。

有効なJSON文字列ではありません。だからそれは完了しません。

応答は{lhs: "1 US-Dollar",rhs: "0,767165324 Euro",error: "",icc: true} It should be {"lhs": "1 US-Dollar","rhs": "0,767165324 Euro","error": "","icc": true}です。

編集:

$.ajax({
    url: "http://www.google.com/ig/calculator?hl=de&q=1USD=?EUR"
}).done( function ( data ) {
    data = data.replace(/([a-z0-9]+):/gi,"\"$1\":"));
    var obj = $.parseJSON( data )
    alert( data.rhs );
});
于 2013-03-05T11:43:21.790 に答える