0

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

到目前为止,如果我正在搜索初学者,有时如果该查询从服务器返回的时间最长,则“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>
4

2 回答 2

1

你很亲密cancelStaleRequests。你想要的是这样的:

oDS.connXhrMode = "ignoreStaleRequests";
于 2011-12-13T04:05:04.647 回答
0

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

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

于 2009-10-08T12:44:37.553 回答