Загрузить json в переменную

Мне нужно сделать что-то очень простое, но, насколько я могу судить, нет простого способа сделать это. Я просто хочу загрузить данные JSON из удаленного источника и сохранить его в глобальной переменной Javascript с помощью jQuery. Вот что у меня есть:

var my_json;
$.getJSON(my_url, function(json) {
  var my_json = json;
});

Переменная my_json остается undefined. Я думаю, что это, безусловно, вопрос о масштабах. Мне кажется, метод $.getJSON должен возвращать JSON, но он возвращает объект XMLHttpRequest. Если я это сделаю:

request = $.getJSON(my_url);
my_json = request.responseText.evalJSON();

Это не работает, так как до readystate == 4, responseetext остается null. Кажется, вам нужно использовать функцию обратного вызова, чтобы вернуть отзыв ответ, поскольку он срабатывает успешно.

Это не может быть так сложно! Правильно?

Ответ 1

Это будет сделано:

var json = (function () {
    var json = null;
    $.ajax({
        'async': false,
        'global': false,
        'url': my_url,
        'dataType': "json",
        'success': function (data) {
            json = data;
        }
    });
    return json;
})(); 

Основная проблема заключается в том, что $.getJSON будет выполняться асинхронно, поэтому ваш Javascript будет проходить мимо выражения, которое вызывает его еще до того, как будет вызван обратный вызов success, поэтому нет никаких гарантий того, что ваша переменная будет захватывать любые данные.

Обратите внимание, в частности, на параметр 'async': false в вышеуказанном вызове ajax. В руководстве говорится:

По умолчанию все запросы отправляются асинхронный (т.е. для этого установлено значение true по умолчанию). Если вам нужна синхронная запросов, установите для этого параметра значение false. Обратите внимание, что синхронные запросы могут временно заблокировать браузер, отключение любых действий, в то время как запрос активен.

Ответ 2

бит кода должен читать:

var my_json;
$.getJSON(my_url, function(json) {
  my_json = json;
});

Ответ 3

<input  class="pull-right" id="currSpecID" name="currSpecID" value="">

   $.get("http://localhost:8080/HIS_API/rest/MriSpecimen/getMaxSpecimenID", function(data, status){
       alert("Data: " + data + "\nStatus: " + status);
    $("#currSpecID").val(data);
    });

введите описание изображения здесь введите описание изображения здесь

Ответ 4

var itens = null;
$.getJSON("yourfile.json", function(data) {
  itens = data;
  itens.forEach(function(item) {
    console.log(item);
  });
});
console.log(itens);
<html>
<head>
<script type="text/javascript" src="http://code.jquery.com/jquery-1.7.2.min.js"></script>
</head>
<body>
</body>
</html>

Ответ 5

  • это получит файл JSON извне в вашу переменную javascript.
  • теперь этот sample_data будет содержать значения файла JSON.

    var sample_data = ''; $.getJSON("sample.json", function (data) { sample_data = data; $.each(data, function (key, value) { console.log(sample_data);