我正在使用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>
答案 0 :(得分:1)
你与cancelStaleRequests
关系密切。你想要的是这个:
oDS.connXhrMode = "ignoreStaleRequests";
答案 1 :(得分:0)
您可以在每个查询中添加一些ID,然后将该ID从服务器重新发送到客户端,并将收到的ID与当前请求ID进行比较。
或者,如果API允许您这样做,可能会中止旧查询。