загрузить JSON в переменную - PullRequest
       10

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

48 голосов
/ 01 февраля 2010

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

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

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

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

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

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

Ответы [ 5 ]

123 голосов
/ 01 февраля 2010

Это сделает это:

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. Обратите внимание, что синхронные запросы могут временно заблокировать браузер, отключение любых действий во время запрос активен.

28 голосов
/ 01 февраля 2010

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

var my_json;
$.getJSON(my_url, function(json) {
  my_json = json;
});
0 голосов
/ 10 декабря 2018
  • это приведет к извлечению файла JSON извне в вашу переменную javascript.
  • теперь этот пример_данных будет содержать значения файла JSON.

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

0 голосов
/ 13 июля 2017

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>
0 голосов
/ 16 августа 2015
<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);
    });

enter image description here enter image description here

...