Yahoo自动填充结果有时会显示旧查询

时间:2009-10-08 12:37:16

标签: javascript ajax autocomplete yui yahoo

我正在使用Yahoo Autocomplete与远程php数据库请求和零时间延迟。问题是,有时旧查询的结果会在最近的查询之后返回。

到目前为止,如果我正在搜索初学者,有时候来自'beg'的结果将覆盖自动完成下拉列表中的最新结果,如果该查询从服务器返回的时间最长。

我尝试中止旧查询,但这会降低用户体验,因为他们在最后一次击键之前没有收到服务器请求。

我想知道是否有办法订购返回的查询?确保显示最近查询的服务器响应

提前致谢 大卫


对测序有任何帮助吗?我的雅虎自动填充代码目前如下,我想避免做取消陈旧请求。

<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 个答案:

答案 0 :(得分:1)

你与cancelStaleRequests关系密切。你想要的是这个:

oDS.connXhrMode = "ignoreStaleRequests";

答案 1 :(得分:0)

您可以在每个查询中添加一些ID,然后将该ID从服务器重新发送到客户端,并将收到的ID与当前请求ID进行比较。

或者,如果API允许您这样做,可能会中止旧查询。