Как вытащить переменнную из подключенного JSON в JS?

Ссылка скопирована
5 марта 2026 1 ответ

Здравствуйте, помогите понять, как вытаскивать переменные из подключаемого файла JSON. Это файл с обновляемыми курсами валют, и нужно потом этот курс использовать для расчетов в других функциях. Например как вытащить переменную "kurs"

$.getJSON("https://www.cbr-xml-daily.ru/daily_json.js", function(data) {      	var  kyrs = Math.ceil(100 / data.Valute.KZT.Value * data.Valute.EUR.Value).toString().replace(/(d)(?=(d{3})+$)/g, '$1 '); 	$('#euro').html(kyrs);  });

$.getJSON("https://www.cbr-xml-daily.ru/daily_json.js", function(data) { var kyrs = Math.ceil(100 / data.Valute.KZT.Value * data.Valute.EUR.Value).toString().replace(/(d)(?=(d{3})+$)/g, '$1 '); $('#euro').html(kyrs); });

Дополнительно:

function getData() {   return new Promise(resolve => {     $.getJSON("https://www.cbr-xml-daily.ru/daily_json.js", function(data) {         const kyrs = Math.ceil(100 / data.Valute.KZT.Value * data.Valute.EUR.Value).toString().replace(/(d)(?=(d{3})+$)/g, '$1 ');         resolve(kurs);     });   }) }  function func1(kurs) {   console.log(kurs); }  function func2(kurs) {   console.log(kurs); }  async function go() {   const kurs = await getData();   $('#euro').html(kyrs);   func1(kurs);   func2(kurs); }  go();

function getData() { return new Promise(resolve => { $.getJSON("https://www.cbr-xml-daily.ru/daily_json.js", function(data) { const kyrs = Math.ceil(100 / data.Valute.KZT.Value * data.Valute.EUR.Value).toString().replace(/(d)(?=(d{3})+$)/g, '$1 '); resolve(kurs); }); }) } function func1(kurs) { console.log(kurs); } function func2(kurs) { console.log(kurs); } async function go() { const kurs = await getData(); $('#euro').html(kyrs); func1(kurs); func2(kurs); } go();

Ответы:

Здравствуйте!
Пробуйте вот так

var kyrs; // объявляем переменную вне функции  $.getJSON("https://www.cbr-xml-daily.ru/daily_json.js", function(data) {   kyrs = Math.ceil(100 / data.Valute.KZT.Value * data.Valute.EUR.Value).toString().replace(/(d)(?=(d{3})+$)/g, '$1 ');   $('#euro').html(kyrs); });  // Теперь переменная kyrs доступна и за пределами функции обратного вызова console.log("Курс: " + kyrs);

var kyrs; // объявляем переменную вне функции $.getJSON("https://www.cbr-xml-daily.ru/daily_json.js", function(data) { kyrs = Math.ceil(100 / data.Valute.KZT.Value * data.Valute.EUR.Value).toString().replace(/(d)(?=(d{3})+$)/g, '$1 '); $('#euro').html(kyrs); }); // Теперь переменная kyrs доступна и за пределами функции обратного вызова console.log("Курс: " + kyrs);

  • Нет, недоступна, пишет NaN. Для проверки можно вытащить $('#euro').html(kyrs); за пределы функции, и она не будет отдавать не какие данные, так же как и консоль
  • Проблема, вероятно, связана с тем, что код после $.getJSON выполняется слишком быстро, еще до того, как запрос будет завершен и данные будут получены. Поскольку $.getJSON выполняется асинхронно, console.log("Курс: " + kyrs); может быть выполнен до того, как переменная kyrs будет установлена.

    Чтобы решить эту проблему, вы можете переместить код, который зависит от значения kyrs, внутрь функции обратного вызова:

    var kyrs; // объявляем переменную вне функции  $.getJSON("https://www.cbr-xml-daily.ru/daily_json.js", function(data) {   kyrs = Math.ceil(100 / data.Valute.KZT.Value * data.Valute.EUR.Value).toString().replace(/(d)(?=(d{3})+$)/g, '$1 ');   $('#euro').html(kyrs);    // Теперь переменная kyrs доступна и за пределами функции обратного вызова   console.log("Курс: " + kyrs); });

    var kyrs; // объявляем переменную вне функции $.getJSON("https://www.cbr-xml-daily.ru/daily_json.js", function(data) { kyrs = Math.ceil(100 / data.Valute.KZT.Value * data.Valute.EUR.Value).toString().replace(/(d)(?=(d{3})+$)/g, '$1 '); $('#euro').html(kyrs); // Теперь переменная kyrs доступна и за пределами функции обратного вызова console.log("Курс: " + kyrs); });

    Таким образом, код, зависящий от значения kyrs, будет выполнен только после завершения запроса и установки значения переменной.

  • RushV, так мне нужно записывать значения огромного масива с кучей переменных, для которого необходимо что бы переменная курса работала за пределами функции JSON. И если бы проблема была только в паре значений, проблемы бы не было)). И если я засуну допустим туда этот массив, это потом не скажется на скорости работы скрипты?
  • Axel030392, У меня работает

    Как вытащить переменнную из подключенного JSON в JS?

    var kyrs; // объявляем переменную вне функции  // Функция, которая принимает данные и обрабатывает их function processCurrencyData(data) {   kyrs = Math.ceil(100 / data.Valute.KZT.Value * data.Valute.EUR.Value).toString().replace(/(d)(?=(d{3})+$)/g, '$1 ');   $('#euro').html(kyrs);    // Теперь переменная kyrs доступна и за пределами функции обратного вызова   console.log("Курс: " + kyrs); }  // Выполняем запрос и передаем функцию обратного вызова $.getJSON("https://www.cbr-xml-daily.ru/daily_json.js", processCurrencyData);  // Здесь код выполняется сразу после отправки запроса, но не ждет его завершения // Поэтому переменная kyrs здесь может быть неопределенной // console.log("Курс: " + kyrs);

    var kyrs; // объявляем переменную вне функции // Функция, которая принимает данные и обрабатывает их function processCurrencyData(data) { kyrs = Math.ceil(100 / data.Valute.KZT.Value * data.Valute.EUR.Value).toString().replace(/(d)(?=(d{3})+$)/g, '$1 '); $('#euro').html(kyrs); // Теперь переменная kyrs доступна и за пределами функции обратного вызова console.log("Курс: " + kyrs); } // Выполняем запрос и передаем функцию обратного вызова $.getJSON("https://www.cbr-xml-daily.ru/daily_json.js", processCurrencyData); // Здесь код выполняется сразу после отправки запроса, но не ждет его завершения // Поэтому переменная kyrs здесь может быть неопределенной // console.log("Курс: " + kyrs);

Нужно решить такую задачу?

Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

Заказать помощь
Лучший ответ
1
Мария Код Ответ

Для того чтобы извлечь переменную из подключенного JSON в JavaScript, вам следует сначала загрузить JSON файл и затем преобразовать его в объект JavaScript. Вот пример кода, который показывает, как это можно сделать:

```html

Извлечение переменной из JSON в JS

// Создаем новый объект XMLHttpRequest
var xhr = new XMLHttpRequest();

// Указываем URL файла JSON
xhr.open('GET', 'file.json', true);

// Отправляем запрос
xhr.send();

// Обработчик события загрузки файла JSON
xhr.onload = function() {
if (xhr.status == 200) {
// Преобразуем полученный JSON в объект JavaScript
var data = JSON.parse(xhr.responseText);

// Извлекаем переменную из JSON
var myVariable = data.variableName;

// Используем переменную
console.log(myVariable);
} else {
console.log('Ошибка при загрузке файла JSON');
}
};

```

В данном примере мы используем объект XMLHttpRequest для загрузки файла JSON с сервера. После успешной загрузки файла, мы преобразуем его содержимое в объект JavaScript с помощью метода JSON.parse(). Затем мы можем извлечь нужную переменную из объекта и использовать ее в дальнейшем коде.

Убедитесь, что файл JSON находится в том же домене, что и ваш скрипт, чтобы избежать проблем с политикой безопасности браузера. В случае, если файл JSON находится на другом домене, вам может потребоваться использовать JSONP или CORS для загрузки данных.

Другие ответы (0)

Пока нет других ответов. Будьте первым, кто поможет автору.

Ответить на вопрос

комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Вам также может быть интересно