Получение JSON данных, доступных для всех областей в JQuery / javascript - PullRequest
0 голосов
/ 05 мая 2020

С помощью JQuery я загружаю набор данных почтового индекса с помощью вызова json, который загружается один раз при загрузке документа для заполнения выбора параметра. Я могу сделать это в рамках одной функции, и это нормально.

Однако каждый раз, когда пользователь выбирает другой почтовый индекс в select, код запускается (через .change), и мне нужно загрузить (довольно большие) те же json данные снова для заполнения некоторых других полей.

Поскольку первый вызов содержится в функции обратного вызова, данные никогда не выходят за пределы этой области и не могут быть повторно использованы снова.

Если кто-то меняет элементы 100 раз, это 100 раз загружает данные, что кажется расточительным и медленным.

Есть ли способ вызвать эти данные один раз и сделать их доступными для глобальная / более широкая область видимости, чтобы она была доступна для функции .change?

EDIT Вот код:

$(document).ready(function() {
  GetPostcodes();
  $("#postcodes").change(function() {
    console.log("Selection Changed to " + $(this).val());
  });
});

function GetPostcodes() {
  $.getJSON("population.json", function(cases) {
      var filtercases = $(cases).filter(function(i, n) {
      return n.POA_NAME16 >= "2450" && n.POA_NAME16 <= "2489"
    });

    var postcodes = [];
    $.each(filtercases, function(i, n) {
      postcodes.push(n);
    });
    postcodes = postcodes.unique();
    postcodes = postcodes.sort();

    var options = [];
      for (var i = 0; i < postcodes.length; i++) {
      options.push('<option value="',
        postcodes[i].POA_NAME16, '">',
        postcodes[i].POA_NAME16, '</option>');
    }
    $("#postcodes").html(options.join(''));

  });
}

Вот как JSON выглядит:

 {
    "POA_NAME16": 2000,
    "Combined": "BARANGAROO,DARLING HARBOUR,,DAWES POINT,HAYMARKET,MILLERS POINT,PARLIAMENT HOUSE,SYDNEY,SYDNEY SOUTH,THE ROCKS",
    "Tot_p_p": 27411
  },
  {
    "POA_NAME16": 2006,
    "Combined": "THE UNIVERSITY OF SYDNEY",
    "Tot_p_p": 1259
  },

Итак, хотя я использую только данные почтового индекса в первом вызове для заполнения раскрывающегося списка, я хотел бы иметь доступ ко всей информации о том, когда свойство .change запускается для отображения другой в формирование.

Ура

1 Ответ

0 голосов
/ 05 мая 2020

Думаю, проблема возникла из-за того, что я пытался сделать это:

GetPostcodes();
console.log(the global variable I set)

что не работает.

Но если я не буду ссылаться на эту глобальную переменную до тех пор, пока другое событие, все внутри и работает - поэтому, хотя у меня уже был ответ, ваша помощь подтолкнула меня к дальнейшему изучению. Ура: P

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...