Автозаполнение jQueryUI не позволяет мне продолжать печатать, пока он занят поиском начального набора символов - PullRequest
0 голосов
/ 23 марта 2012

У меня есть поле ввода типа панели поиска Google. Когда я набираю пару символов и жду полсекунды, он запускает вызов ajax на внешний веб-сайт, который я установил в функции «source» кода автозаполнения, и как только он возвращает результаты, он возвращает его на экран как надо).

Проблема в том, что во время выполнения вызова ajax для получения результатов он не позволит мне продолжить ввод в поле ввода до завершения вызова ajax.

Как я могу получить его, чтобы я мог продолжать набирать текст во время вызова ajax?

Вот моя функция jQuery:

$('#googleSearchbar').autocomplete({
   minLength: 2,
   autoFocus: true,
   delay: 500,
   source: function (request, response) {
     results = $.parseJSON($(this).callJson('post', 'http://my_external_url', {
       data: request.term
     }));

     response(results);
   },
   error: function (err) {
     console.error('ERROR : ' + err);
     return false;
   }
 });

1 Ответ

1 голос
/ 23 марта 2012

У меня есть подозрение, что вы блокируете браузер, когда делаете запрос AJAX. Эта строка:

results = $.parseJSON($(this).callJson('post', 'http://my_external_url', {
  data: request.term
}));

Заставляет меня думать, что $(this).callJson(...) является синхронным запросом, который блокирует весь браузер на время запроса.

Вам необходимо сделать асинхронный запрос и вызвать функцию response, когда этот запрос завершится. Это должно остановить браузер от блокировки.

...