2009-10-08 44 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"; 
相關問題