Это вызов асинхронной функции, вам нужно включить оповещение в вашей функции успеха ajax
function ajaxTest() {
let currencyRate = "";
$.ajax({
url: "http://free.currencyconverterapi.com/api/v5/convert?q=USD_INR&compact=y",
dataType: "jsonp",
success: function(json) {
let myObject = JSON.parse(json);
currencyRate += myObject.USD_INR.val;
// put alert here
alert(currencyRate);
}
})
}
Или лучший подход был бы как ниже.
ajaxTest().then(function( json ) {
let myObject = JSON.parse(json);
currencyRate += myObject.USD_INR.val;
// put alert here
alert(currencyRate);
});
Или даже использоватьобратные вызовы выглядят следующим образом:
function ajaxTest( callback ) {
let currencyRate = "";
$.ajax({
url: "http://free.currencyconverterapi.com/api/v5/convert?q=USD_INR&compact=y",
dataType: "jsonp",
success: function(json) {
let myObject = JSON.parse(json);
currencyRate += myObject.USD_INR.val;
callback(currencyRate);
}
})
}
ajaxTest(function( result ) {
alert(result)
})
Обновлено
Нет необходимости анализировать возвращаемый JSON вообще.
function ajaxTest() {
let currencyRate = "";
$.ajax({
url: "http://free.currencyconverterapi.com/api/v5/convert?q=USD_INR&compact=y",
dataType: "jsonp",
success: function(json) {
// no need to parse it to json anymore
// let myObject = JSON.parse(json);
currencyRate += json.USD_INR.val;
// put alert here
alert(currencyRate);
}
})
}
ajaxTest();
Приведенный выше код должен работать, так как сам возврат JSONэто json и больше не нужно разбирать его на json.