首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在JQuery/经典ASP中自动完成滚动加载

在JQuery/经典ASP中自动完成滚动加载
EN

Stack Overflow用户
提问于 2017-07-17 14:58:46
回答 2查看 806关注 0票数 0

经典的ASP中有一个自动完成的文本框。最小长度设置为4,但是非常慢,自动完成列表返回500多条记录。

登录控制台将返回预期的结果,如果少于500行,将在“自动完成”文本框中返回正确的列表。

如果我想在滚动而不是加载页面时加载更多的数据,那么最好的方法是什么?

代码语言:javascript
复制
$(document).ready( function(){  
    var availableCode = new Array();
    var strCode = "";

    <%
    Dim idxJs
    for idxJs = 0 to UBound(CodeList)-1 
    %>
        availableCode[<%=idxJs %>] = unescape('<%= Escape(CodeList(idxJs)) %>');

    <% next %>

    function customFilter(array, terms) {
        arrayOfTerms = terms.split(" ");
        var term = $.map(arrayOfTerms, function (tm) {
             return $.ui.autocomplete.escapeRegex(tm);
        }).join('|');
       var matcher = new RegExp("(?![^&;]+;)(?!<[^<>]*)("+term+")(?![^<>]*>)(?![^&;]+;)" , "i");
        return $.grep(array, function (value) {
            console.log("result - " + matcher.test(value.label || value.value || value));
            console.log("value - " + value)
           return matcher.test(value.slice(0, 10));
        });
    };

    $( "#frmCode" ).autocomplete({
      multiple: true,
      mustMatch: false,
      minLength: 4,
      delay: 100,
      search: function (event,ui) {
       window.pageIndex = 0;
      },
      source: function (request, response) {
        response(customFilter(
        availableCode, request.term));
      }
    });
} );

一些更新:在经典ASP代码的开头,我为缓存控制添加了下面的内容,它做了一些改进,但仍然无法工作。

代码语言:javascript
复制
<%@ Language=VBScript %>
<%

Response.buffer=true
Response.Expires = -1
Response.ExpiresAbsolute = Now() -1 
Response.CacheControl = "no-cache"
Response.AddHeader "cache-control", "private" 
Response.AddHeader "Pragma", "no-cache"

%>
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-09-29 19:43:24

为了比赛,我做了以下的改变。

代码语言:javascript
复制
var matcher = new RegExp("" + term,  "i");

我还添加了“切片”来显示前100名。这大大提高了这一问题的性能。

代码语言:javascript
复制
$( "#frmCode" ).autocomplete({
    multiple: true,
    multipleSeparator: " ",
    mustMatch: false,
    minLength: 2,
    search: function (event,ui) {
    window.pageIndex = 0;
},
source: function (request, response) {
    response(customFilter(
    availableCode, request.term).slice(0, 100));
 }

谢谢大家的建议!

票数 1
EN

Stack Overflow用户

发布于 2017-08-01 04:34:42

其中一个瓶颈是将数据输出到数组CodeList,然后遍历数据并编写每一行来填充javascript数组。如果数组CodeList中的数据不经常更改,我将使用调度的任务每天运行几次,运行vbscript来生成html/asp页面,而javascript数组没有asp循环。您将用实际的javascript数组数据替换for/next asp循环。页面的加载速度会快得多。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45147507

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档