2016-01-26 103 views
0

選擇的實時匯率爲一種貨幣對我使用這個API鏈接:從雅虎

http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20yahoo.finance.xchange%20where%20pair%20in%20%28%22USDEUR%22,%20%22USDJPY%22,%20%22USDBGN%22,%20%22USDCZK%22,%20%22USDDKK%22,%20%22USDGBP%22,%20%22USDHUF%22,%20%22USDLTL%22,%20%22USDLVL%22,%20%22USDPLN%22,%20%22USDRON%22,%20%22USDSEK%22,%20%22USDCHF%22,%20%22USDNOK%22,%20%22USDHRK%22,%20%22USDRUB%22,%20%22USDTRY%22,%20%22USDAUD%22,%20%22USDBRL%22,%20%22USDCAD%22,%20%22USDCNY%22,%20%22USDHKD%22,%20%22USDIDR%22,%20%22USDILS%22,%20%22USDINR%22,%20%22USDKRW%22,%20%22USDMXN%22,%20%22USDMYR%22,%20%22USDNZD%22,%20%22USDPHP%22,%20%22USDSGD%22,%20%22USDTHB%22,%20%22USDZAR%22,%20%22USDISK%22%29&env=store://datatables.org/alltableswithkeys

但似乎這不是選擇與特定ID的元素的方式。

因此,檢查該鏈接,我的問題是,裏面的結果 - >率元素與不同的ID,因此現在我只希望USDEUR指數,我想類似的東西

<script> 
      setInterval(function(){ 
       //somehow convert xml to json 
       $.getJSON('http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20yahoo.finance.xchange%20where%20pair%20in%20%28%22USDEUR%22,%20%22USDJPY%22,%20%22USDBGN%22,%20%22USDCZK%22,%20%22USDDKK%22,%20%22USDGBP%22,%20%22USDHUF%22,%20%22USDLTL%22,%20%22USDLVL%22,%20%22USDPLN%22,%20%22USDRON%22,%20%22USDSEK%22,%20%22USDCHF%22,%20%22USDNOK%22,%20%22USDHRK%22,%20%22USDRUB%22,%20%22USDTRY%22,%20%22USDAUD%22,%20%22USDBRL%22,%20%22USDCAD%22,%20%22USDCNY%22,%20%22USDHKD%22,%20%22USDIDR%22,%20%22USDILS%22,%20%22USDINR%22,%20%22USDKRW%22,%20%22USDMXN%22,%20%22USDMYR%22,%20%22USDNZD%22,%20%22USDPHP%22,%20%22USDSGD%22,%20%22USDTHB%22,%20%22USDZAR%22,%20%22USDISK%22%29&env=store://datatables.org/alltableswithkeys', function(data) { 
       var USD = 1/data.query.results.rate['USDEUR'].Rate * 1.955 
       document.getElementById('output-value').innerHTML = USD * document.getElementById('input-value').value;  
       }); 
      }, 500); 
     </script> 

回答

3

這很容易理解,如果你通過一個解碼器運行URL(例如,PHP的urldecode()函數,這是我做的,或者是在線提供的衆多解碼器之一)。 URL只是這個的一個編碼版本:

http://query.yahooapis.com/v1/public/yql?q= 
select * 
from yahoo.finance.xchange 
where pair in ("USDEUR", "USDJPY", "USDBGN", "USDCZK", "USDDKK", 
    "USDGBP", "USDHUF", "USDLTL", "USDLVL", "USDPLN", "USDRON", 
    "USDSEK", "USDCHF", "USDNOK", "USDHRK", "USDRUB", "USDTRY", 
    "USDAUD", "USDBRL", "USDCAD", "USDCNY", "USDHKD", "USDIDR", 
    "USDILS", "USDINR", "USDKRW", "USDMXN", "USDMYR", "USDNZD", 
    "USDPHP", "USDSGD", "USDTHB", "USDZAR", "USDISK") 
&env=store://datatables.org/alltableswithkeys 

我添加了一點格式,以使它明顯是怎麼回事。這是一個YQL (Yahoo! Query Language)語句(實際上只是一個SQL SELECT語句)和一個配對名稱列表。

爲了得到你想要的結果,剛剛從URL刪除其他對,就像這樣:

http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20yahoo.finance.xchange%20where%20pair%20in%20%28%22USDEUR%22%29&env=store://datatables.org/alltableswithkeys

響應(格式化的可讀性):

<?xml version="1.0" encoding="UTF-8"?> 
<query xmlns:yahoo="http://www.yahooapis.com/v1/base.rng" yahoo:count="1" yahoo:created="2016-01-26T19:43:48Z" yahoo:lang="en-US"> 
    <results> 
     <rate id="USDEUR"> 
      <Name>USD/EUR</Name> 
      <Rate>0.9217</Rate> 
      <Date>1/26/2016</Date> 
      <Time>7:43pm</Time> 
      <Ask>0.9218</Ask> 
      <Bid>0.9217</Bid> 
     </rate> 
    </results> 
</query> 
<!-- total: 14 --> 
<!-- main-4f1bf6c6-c3ce-11e5-a05e-56847afe9799 --> 
+0

@dandavis感謝指出這一點。我已經使用任何Yahoo! API,我還沒有聽說過這個。我更新了我的答案。 –