JSON与多个连接

时间:2014-08-30 21:18:30

标签: javascript php mysql json livesearch

我目前正在建立一个网站,用于搜索外部数据库并显示与给定搜索字符串匹配的记录。搜索是实时的,因此在用户输入时会显示结果。

现在我采用的第一种(也是当前的)方法是页面实际连接到mySQL服务器并通过AJAX检索内容,用户在搜索框中输入每个字母。

现在我开始查看JSON对象(我最近才开始构建网站),并且想知道在开始时将整个数据库加载到JSON对象中是否是个好主意,然后查看在搜索时

这是一个好主意吗?会更快吗?提前谢谢

1 个答案:

答案 0 :(得分:2)

这完全取决于数据的大小和查询的复杂性。如果您可以提前将数据合理地发送到客户端然后在本地搜索,那么确定,这很有用,因为它全部是本地的,并且您没有查询服务器的延迟。但是如果您有大量数据,或者查询很复杂,那么在服务器上进行查询可能会更有意义。

没有一个适合所有人的解决方案,它依赖于数据。

  

...并通过AJAX检索内容,用户在搜索框中输入每个字母。

这通常是矫枉过正的。通常情况下,你要等到用户输入暂停之后才开始关闭ajax调用,这样如果他们快速连续输入“james”,你会搜索“james”而不是搜索“j”,然后“ja” “然后是”果酱“,然后是”jame“,然后是”james“。

例如,假设您的搜索触发器是keypress事件。这将是一种相当普遍的方法:

var keypressTimer = 0;
function handleKeypress() {
    if (keypressTimer) {
        cancelTimeout(keypressTimer);
    }
    keypressTimer = setTimeout(doSearch, 100); // 100ms = 1/10th of a second
}
function doSearch() {
    var searchValue;

    keypressTimer = 0;
    searchValue = /*...get the search value...*/;
    doAjaxCallUsing(searchValue);
}

这被称为“去抖动”输入(来自硬件工程,与按下时键的机械和电气“弹跳”有关)。