2013-03-05 69 views
0

我正在嘗試向Google API發出ajax請求,以獲取當前匯率的JSON數據。jQuery Ajax請求獲取JSON數據觸發錯誤事件

我迄今爲止代碼:

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

的鏈接,谷歌的API是http://www.google.com/ig/calculator?hl=de&q=1USD=?EUR

我的問題是,我的代碼不會觸發done功能。

我知道缺少一些東西,也許有些參數?


UPDATE

這裏是我的新代碼,我在什麼地方找到:

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人有什麼建議嗎?

+0

難道你看一下'ajax'甚至文檔? – 2013-03-05 11:41:11

+0

我做了,但我感到困惑 – Ace 2013-03-05 11:41:38

+0

'dataType:「json」'丟失。 – Jai 2013-03-05 11:42:12

回答

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); 
}); 
+0

好吧,那我該如何獲取「rhs」值? – Ace 2013-03-05 11:44:43

+0

我剛剛格式化了谷歌對有效JSON的迴應! – Garfield 2013-03-05 11:50:56

+0

好吧,第4行有一個語法錯誤(雙關閉) – Ace 2013-03-05 11:51:57