динамические свойства javascript исчезают после успешного объявления его из json - становится пустым объектом (не определено) - PullRequest
0 голосов
/ 17 ноября 2011
var s = store.get('billablexxxx');
if (!s) {
    if (false) {
          s = { 
             "something" : 'Value', ....
          }
     }
 }else {
        s = new Object;
        $.getJSON('Translation/GetIndexLabels', function(data) {
            $.each(data, function(key, val) {
             s[key] = val;
          //    temp[key] = val;
           })}) ;
    }
}
//here i use the variable

Но когда я использую переменную, динамические свойства исчезли, она не неопределенная, а пустой объект. Однако, если это было установлено в функции $ .getJSON (), все значения добавляются.

Что я сделал не так?

Edit: Исправил проблему, поместив ее в функцию. Когда я отправил вопрос, я уже был близок к ответу, который искал за последний «час» (странные результаты консоли javascript привели в замешательство).

Спасибо за совет!

Ответы [ 2 ]

1 голос
/ 17 ноября 2011

Вызов $.getJSON() является асинхронным, поэтому выполнение достигнет той части, в которой вы «используете переменную», до завершения асинхронного вызова.

Обычный способ справиться с этим - использовать переменную внутри функции обратного вызова, на которую ссылается вызов getJSON().

Вот ссылка: http://api.jquery.com/jQuery.getJSON/

1 голос
/ 17 ноября 2011

Метод getJSON является асинхронным, он вызывает вашу функцию (данные) после завершения. В момент, когда вы используете s, метод getJSON еще не вернулся, поэтому свойства s не были инициализированы.

...