Асинхронный поиск с AJAX и Jquery - PullRequest
0 голосов
/ 11 марта 2011

У меня есть страница, которую я создаю, которая работает в основном с AJAX.Я хочу, чтобы поиск на странице был асинхронным, чтобы по мере ввода пользователя результаты поиска менялись на лету.Мне удалось сделать эту работу несколько, послав вызов AJAX на keyup из текстового поля, и он хорошо работает в Chrome, FF и т. Д. Единственная проблема, с которой я столкнулся, - это IE7.Страница начинает работать очень медленно при вводе текста, поэтому я предполагаю, что, возможно, функция для вызова AJAX открывается несколько раз без закрытия, в результате чего страница замедляется.Есть ли простой способ сделать это, где я могу в основном завершить текущий вызов AJAX, если нажата другая клавиша?Или, может быть, есть какая-то другая причина, по которой IE может работать медленно?Общий код:

$('.search_input').keyup(function(e) { make ajax call and populate results }

Заранее благодарим за помощь.

Ответы [ 2 ]

0 голосов
/ 11 марта 2011

Хм ... У меня есть что-то подобное, и я протестировал это в IE7 без каких-либо замедлений. Вот как выглядит мой код:

$("#key").keyup(function(event) {
        if(event.which != '13') {
            $.get("hash.php", {key: $("#key").val()}, function(hashes) {
                $("#hashvalues").html(hashes);
            });
        }
    });

"# key" - это поле ввода текста, "hash.php" - текущая страница, а "#hashvalues" - это основной контейнерный контейнер на странице hash.php.

Возвращаете ли вы безумное количество данных по какой-либо причине? Я видел, как IE замедляется, если возвращается МНОГО HTML.

0 голосов
/ 11 марта 2011

Используйте jQuery.Load (), чтобы продолжить загрузку отдельной страницы в элемент-заполнитель (например, div), и каждый раз передавайте значение search_input в качестве значения строки запроса.

Это даст новое чувство поиска в Google, если это то, что вы после

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