2009-10-08 21 views
0

我使用雅虎自动填充与远程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> 

回答

0

您可以在每个查询添加一些ID然后重新发送从服务器到客户端编号,同时比较接收ID当前请求ID。

或者,如果API允许您这样做,也许可以中止旧的查询。

1

您近距离接触cancelStaleRequests。你想要的是:

oDS.connXhrMode = "ignoreStaleRequests"; 
相关问题