exchangeratesapi.io请求给我undefined

时间:2018-05-31 17:06:23

标签: javascript jquery api

我正在尝试制作货币转换器,但API调用似乎没有识别出我的第二个输入。但是,它确实认识到第一个输入,这就是为什么我很困惑。

在我的console.log(data.rates.EUR)的Ajax请求中,它给了我想要的东西。我也可以console.log(currency2),我得到字符串“EUR”(或者我的currency2设置为什么,具体取决于输入的值)。但是,当我尝试运行(data.rates.currency2)时,它无法识别currency2和console.log的未定义。我是一个初学者,我觉得这可能与异步或其他东西有关。我非常感谢任何帮助,因为我整天都被这一切困扰。

谢谢!

HTML
<div class="row">
<div class="col-2">
<select class="form-control" name="" id="curr1">
<option value="USD">USD</option>
<option value="GBP">GBP</option>
<option value="EUR">EUR</option>
</select>
</div>
<div class="col-8">
<input type="text" class="form-control" id="from">
</div>
</div>
<div class="row">
<div class="col-2">
<select class="form-control" name="" id="curr2">
<option value="USD">USD</option>
<option value="GBP">GBP</option>
<option value="EUR">EUR</option>
</select>
</div>
<div class="col-8">
<input type="none" class="form-control" id="to">
</div>
</div>
<br>
<div class="col-12 text-center">
<button id="submitBtn" class="btn btn-success">Submit</button>
</div>



JS

$("#submitBtn").click(function(){
convert();
});

function convert(){
let currency1 = $('#curr1').val();
let currency2 = $('#curr2').val();


$.ajax("https://exchangeratesapi.io/api/latest?base=" + currency1 
).done(function(data){
console.log(currency2);
console.log(data.rates.EUR);
console.log(data.rates.currency2);
});

}

1 个答案:

答案 0 :(得分:0)

您只需使用索引器currency2即可从响应中访问data.rates[currency2]相关值。

&#13;
&#13;
$("#submitBtn").click(function(){
convert();
});

function convert(){
let currency1 = $('#curr1').val();
let currency2 = $('#curr2').val();


$.ajax("https://exchangeratesapi.io/api/latest?base=" + currency1 
).done(function(data){	
  var val = parseFloat($("#from").val());
  $("#to").val(val ? val * data.rates[currency2] : 0)
});

}
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="row">
<div class="col-2">
<select class="form-control" name="" id="curr1">
<option value="USD">USD</option>
<option value="GBP">GBP</option>
<option value="EUR">EUR</option>
</select>
</div>
<div class="col-8">
<input type="text" class="form-control" id="from">
</div>
</div>
<div class="row">
<div class="col-2">
<select class="form-control" name="" id="curr2">
<option value="USD">USD</option>
<option value="GBP">GBP</option>
<option value="EUR">EUR</option>
</select>
</div>
<div class="col-8">
<input type="text" class="form-control" id="to">
</div>
</div>
<br>
<div class="col-12 text-center">
<button id="submitBtn" class="btn btn-success">Submit</button>
<div id="output"></div>
</div>
&#13;
&#13;
&#13;