Проблема с jQuery.getJSON (видемость массивов в нутри и снаружи конструкци)
var boxSort = new Array();
var boxId = new Array();
var boxName = new Array();
var boxContent = new Array();
var inum = 0;
jQuery.getJSON("ajax.php",
function(data){
jQuery.each(data, function(i,itemsss){
boxSort [inum] = itemsss.sort;
boxContent [inum] = itemsss.content;
boxName [inum] = itemsss.name;
boxId [inum] = itemsss.id;
inum++;
console.log(boxId [inum]); // тут все ОК
if ( i == 0 ) return false;
});
});
console.log(boxId [0]); // дает undefined
загрузка json'a, в jQuery.getJSON массив виден boxName [0], а дальше не определено. Подскажите в чем проблема? |
Потому что аякс-запрос выполняется асинхронно, и последний console.log выполяняется до выполнения callback'a на аякс.
|
Цитата:
можете подсказать решение проблемы? |
Либо делать синхронный запрос (не особо), либо переработать саму логику своего приложения. Для чего и где Вам потом использовать boxId? Возможно, дальнейшие действия с ним можно положить в тот же callback на аякс?
|
Цитата:
На основе этих данных должны строится блоки. в общем попробую, спасибо |
Хм... Так и стройте их в callback-функции, а не за ее пределами, должно сработать :)
|
Цитата:
e1f, Вопрост чисто теоретический, а возможноли из getJSON отправлять переменные к остальной странице? чтобы console.log(boxId [0]); // boxId был виден ))) |
Он будет виден, скажем так, спустя некоторое время. То есть тогда, когда выполнится колбек, где он и опредляется. А вот когда это произойдет -- хз, зависит и от времени получения ответа от сервера. Но после завершения аякса переменная у Вас будет определена.
|
Цитата:
но ничего не поделаешь... :-? |
А почему грустно? Все логично: хотите переменную сразу - жертвуйте асинхронностью. В принципе, механизм callback-функций вполне способен реализовать все так, чтобы переменнные использовались тогда, когда они инициализированы нужными значениями
|
| Часовой пояс GMT +3, время: 00:29. |