1

我正在使用远程数据源,它是一个数据库查询。查询的最大结果是 1000。我正在使用“term”参数来过滤我的结果,但响应速度很慢。2 个字符实际上还不错,但是如果您键入一个字母,则返回几乎要 3 秒。我从 YUI 切换到 jquery。使用相同的数据源,我在 YUI 上的工作速度要快得多。响应是即时的 1 个字符。有一个更好的方法吗?代码如下。

$(function() {

    $("#xContact").autocomplete({
        minLength: 1,
        source: "<$strLower(HttpWebRoot)$>data/employee_lookup.php",
        focus: function( event, ui ) {
            $( "#xContact" ).val( ui.item.label );
            return false;
        },
        select: function( event, ui ) {
            $( "#xContact" ).val( ui.item.label );
            return false;
        }
    })
    .data( "autocomplete" )._renderItem = function( ul, item ) {
        return $( "<li></li>" )
            .data( "item.autocomplete", item )
            .append( "<a>" + item.label + "<br><span style='font-size:0.8em'>" + item.desc + "</span></a>" )
            .appendTo( ul );
    };
});
4

1 回答 1

1

我相信这是处理远程数据源的库的问题

我的推理:我使用本地数据源具有完全相同的代码,具有更多数据,并且它会立即呈现在 1 个字符上。我知道这也不是我的远程数据源。如果我直接浏览到执行查询的服务器端页面,它会立即呈现结果。其中一个建议是它很慢,因为它正在为每个结果操作 DOM。好吧,它对本地资源做同样的事情。所以,我不买那个解释。唯一的区别是来源。所以,处理远程数据源肯定会有延迟。有人建议将远程数据源结果放入一个字符串中,然后将其用作源。我不应该那样做。如果可行,它将证明 jquery 不能以相同的方式处理远程数据源。假设我的远程数据源没有导致延迟(事实并非如此),本地和远程之间应该没有区别。它最终是一组数据。所以问题必须是远程数据源的处理和/或呈现

我将 YUI 与相同的远程数据源一起使用,它会立即在 1 个字符上呈现列表。因此,这证明它也不是数据源。我切换到 jquery 是因为我发现它总体上更好。我将查询限制为 250 条记录。它不是即时的,但它会在大约 1 秒内渲染。

于 2012-05-08T23:34:38.607 回答