Проблема с 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-функций вполне способен реализовать все так, чтобы переменнные использовались тогда, когда они инициализированы нужными значениями
|
Цитата:
я согласен, недавно познакомился с livequery думал может есть нечто подобное для аякса. Цитата:
|
Цитата:
Все заработало, спасибо:dance: |
Цитата:
Цитата:
|
Часовой пояс GMT +3, время: 13:18. |