jquery ajax async false вызывает проблему события щелчка - PullRequest
0 голосов
/ 05 ноября 2010

У меня есть скрипт, который запускается через многоуровневый массив и каждый раз вызывает новую команду ajax GET для php-файла с частью этого массива в качестве данных. Довольно простой ...

for(var x=0; x<cities.length; x++){
    for(var u=0; u<links.length; u++){
       $.ajax({
                    url: "dontneedtoknow.php?city=" + cities[x] + "&link=" + links[u],
                    type: 'GET',
                    async: false,
                    cache: false,
                    timeout: 30000,
                    error: function(){
                        return true;
                    },
                    success: function(data){ 
                          //just appending data to page
                    }
                });
   }
}

Я хотел бы иметь возможность иметь события click () и возможность ОСТАНОВИТЬ этот цикл for, но когда этот цикл идет, я не могу делать НИЧЕГО из-за асинхронного false.

Мне нужна асинхронная ложь, потому что я хочу, чтобы данные добавлялись по мере завершения каждой функции.

Я пробовал .live (), но, похоже, это не работает ...

Идеи

Ответы [ 2 ]

1 голос
/ 05 ноября 2010

Когда async равно false, весь браузер * будет зависать.Вы не можете ничего сделать во время синхронного вызова Ajax, кроме ожидания завершения вызова.

Если вы хотите иметь возможность остановить цикл, вы должны использовать асинхронные вызовы.

См. Также:

Эта последняя ссылка особенно может быть полезна (еслиЯ понимаю, что вы пытаетесь сделать здесь).


*, если вы не в Chrome (тогда это просто текущая страница)

0 голосов
/ 05 ноября 2010

Зачем делать так много звонков на сервер?Это кажется мне очень неэффективным.

Есть ли причина, по которой вы не можете сменить услугу, которой вы звоните, чтобы получить список товаров и вернуть его?Это будет связано с одним вызовом Ajax, а код на стороне сервера может гарантировать, что данные обрабатываются в порядке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...