2016-01-05 2 views
0
$(document).ready(function() { 
    $.wordlist = []; 
    $.get('../wordlist.txt', function(data){ 
    $.wordlist = data.split('\n'); 
    }); 
    console.log($.wordlist); 
}); 

console.log($.wordlist) последовательно возвращает пустой массив. Тот же вызов console.log в функции $.get() успешно возвращает полный массив.jQuery Variable Недоступно вне функции

Что я делаю неправильно и как сделать этот массив доступным по всему миру?

+1

'$ .get' является асинхронным. –

+1

Получите запрос async, поэтому ваш console.log показывает переменную до того, как будет выполнен. Используйте обратный вызов успеха, как указано здесь: https://api.jquery.com/jquery.get/ – Blady214

ответ

1

Метод $.get является асинхронным. Это означает, что он все еще выполняется при запуске console.log. Вам нужно разместить все код, который опирается на данные, возвращаемые по запросу в функции обратного вызова:

var wordlist = []; 
$.get('../wordlist.txt', function(data){ 
    wordlist = data.split('\n'); 
    console.log(wordlist); 
}); 

Также обратите внимание, что это не очень хорошая идея, чтобы добавить свои собственные переменные в JQuery ($) пространства имен.

+0

Почему вы отвечаете на него, даже если он дублируется? –

+1

1) Поскольку это не точный дубликат, OP не возвращается из функции. 2) Потому что не загрязнение '' 'посторонними свойствами/функциями является важным моментом. –

+1

OKay, спасибо. Это уточняется. ':)' –

Смежные вопросы