С наступающим Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы
jQuery
Войти
Регистрация
Восстановить пароль
 
Jazz411
85 / 33 / 12
Регистрация: 12.03.2011
Сообщений: 234
Записей в блоге: 2
1

странность в коде

13.07.2012, 16:40. Просмотров 455. Ответов 4
Метки нет (Все метки)

Доброго времени суток

на странице есть div
HTML5
1
2
<div id="obl">
</div>
после неё я написал скрипт который должен вывести содержимое JSON файла в него

Javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
jQuery(document).ready(function () 
{
  path = "photo/photo.json";
  var items = [];
  jQuery.getJSON(path, function(data) {
     jQuery.each(data, function (key, val) {
        items.push(key);
     });
  });
 
  for(I = 0; i < items.length; i++)
  {
    jQuery(document).load("photo/" + items[i] + ".txt", {}, function (data) {
        jQuery("div#obl").append("<p></p>" + data);
    });
  }
 });
}
и самое интересное, то что цикл начинает работать только если между getJSON и самим циклом поставить alert. Как бы этого избежать?

Добавлено через 19 часов 45 минут
да, ладно, у всех работает без alert??
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.07.2012, 16:40
Ответы с готовыми решениями:

Странность
Вобщем, дело такое, есть жесткий диск в ноутбуке, рабочий, сейчас используется,...

Странность
#include &lt;stdio.h&gt; void quicksort(int *arr, int b, int e) { int l = b,...

странность в шаблоне
Делаю портал недвижемости. Подключен компонент IProperty 2.0 ну и в нем есть...

Странность с Daemon-ом
Последние пол года дисковод перестал читать DWD, при чем иногда некоторые DWD...

Странность С++ и SDL
Здравствуйте уважаемые форумчане возникла непонятная ситуация вообщем писал на...

4
Nigepas
40 / 40 / 14
Регистрация: 07.04.2012
Сообщений: 98
13.07.2012, 19:48 2
Ну так естественно. Цикл начинает работать, а данных то нет еще, запаздывают-с.
А alert у вас в роли эдакого костыля, который создает задержку , которой хватает на подготовку items
Запускайте второй цикл for уже после того, как отработает первый цикл each
0
Soldado
731 / 722 / 137
Регистрация: 28.06.2012
Сообщений: 1,318
Записей в блоге: 4
13.07.2012, 20:02 3
На практике не пробовал, но знаю из теории:
.getJSON это краткий запрос, в нём не задашь все настройки, в таких случаях используют .ajaxSetup() с помощью этой глобальной функции можно задать такой .ajax - параметр как async - true (по умолчанию) при true - во время обработки запроса на сервере клиентская часть продолжает выполняться, если false - то клиентская часть приостанавливает работу до тех пор, пока не прийдёт ответ от сервера об окончании обработки серверной части запроса.
Вам судя по всему надо async:false,
0
Jazz411
85 / 33 / 12
Регистрация: 12.03.2011
Сообщений: 234
Записей в блоге: 2
13.07.2012, 20:26  [ТС] 4
Nigepas, если я прав то код по любому запустится после создания div т.к. он написан после div и в начале кода я писал jQuery(document).ready(
0
Nigepas
40 / 40 / 14
Регистрация: 07.04.2012
Сообщений: 98
13.07.2012, 21:31 5
Цитата Сообщение от Jazz411 Посмотреть сообщение
Nigepas, если я прав то код по любому запустится после создания div т.к. он написан после div и в начале кода я писал jQuery(document).ready(
Причем тут div и $(document).ready() ??

У вас во втором цикле происходит перебор массива item, который создается первым циклом.

Оба цикла запускаются уже после загрузки документа и работают асинхронно, т.е. нет никакой гарантии, что массив item будет готов к моменту запуска второго цикла.

Alert() между этими циклами у вас какраз и создает этот побочный эффект, и код начинает работать. Как только вы убираете alert все ломается.

Повторюсь еще раз: вам необходимо запустить второй цикл for уже после того, как полностью отработает первый цикл each. Этож не php ))
Второй цикл не будет ждать пока вернутся все get данные в первом цикле....
0
13.07.2012, 21:31
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.07.2012, 21:31

Странность с Select
$email = 'paulasimoes91@hotmail.com'; $sql = &quot;SELECT * FROM `clients` WHERE...

Проверка на странность
php_flag magic_quotes_gpc Off RewriteEngine on AddDefaultCharset UTF-8...

странность feof()
#include&lt;stdio.h&gt; #include&lt;stdlib.h&gt; #include&lt;string.h&gt; void main(void)...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru