Yahoo Autocomplete результаты иногда показывают старый запрос - PullRequest
0 голосов
/ 08 октября 2009

Я использую Yahoo Autocomplete с удаленным запросом базы данных php и нулевой задержкой. Проблема в том, что иногда результаты старого запроса возвращаются после самого последнего запроса.

Пока что пример, если я ищу новичка, иногда результаты 'beg' переопределяют самый последний результат в выпадающем списке автозаполнения, если этот запрос дольше всего возвращается с сервера.

Я пытался прервать старые запросы, но это замедляет работу пользователей, поскольку они не получают запрос от сервера до последнего нажатия клавиши.

Мне было интересно, есть ли способ заказать запросы, которые возвращаются? Чтобы убедиться, что в ответе сервера на самый последний запрос отображается

Заранее спасибо David


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

<script type="text/javascript">                

          YAHOO.example.autocomplete = function() {


            // instantiate remote data source
            var oDS = new YAHOO.util.XHRDataSource("../employer/post-job/get_towns.php"); 
            oDS.responseType = YAHOO.util.XHRDataSource.TYPE_XML; 
            oDS.responseSchema = { 
               resultNode: 't', 
               fields: ['n']             
            }; 
            oDS.maxCacheEntries = 100;
            // oDS.queryMatchSubset = true;   
            // oDS.connXhrMode = "cancelStaleRequests";


            // instantiate YUI autocomplete widgets

            var oAC0 = new YAHOO.widget.AutoComplete("input1", "inputcontainer", oDS);  
            oAC0.minQueryLength = 3; 
            oAC0.queryDelay = 0.05;    
            oAC0.maxResultsDisplayed = 10;

            return {
                oDS: oDS,
                oAC0: oAC0

            };
          }();
         </script>

Ответы [ 2 ]

1 голос
/ 13 декабря 2011

Вы были близки с cancelStaleRequests. То, что вы хотели, было это:

oDS.connXhrMode = "ignoreStaleRequests";
0 голосов
/ 08 октября 2009

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

Или, возможно, прервать старые запросы, если API позволяет это сделать.

...