首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >jquery搜索自动提示非常慢

问jquery搜索自动提示非常慢
EN

Stack Overflow用户
提问于 2014-01-24 10:17:23
回答 1查看 132关注 0票数 0

我有自动提示搜索字段,但结果加载非常慢,我认为这可能是我的错误。请看一下代码,并建议我:)

我有大约1000个结果的数据库表(因此不多)。也许应该停止搜索进入新的字符,或某物..。提前感谢您的建议。

代码语言:javascript
复制
<div class="searching">
<form id="search" name="searchForm" class="sform" action="index" method="post" autocomplete="off">
    <input type="text" name="keywords" id="inputString"  class="searches"  />
    <input type="submit" name="submit_btn" class="button"  />
</form>

<div class="results">
    <div class="inner">
        <?php //print_r($_POST);
        if(isset($_POST['results']) && !empty($_POST['results'])){
            ?>
            <ul>
            <?php
            foreach($_POST['results'] as $row){
                echo $_POST['results'];
            }
            ?>
            </ul>
            <?php
        }
        ?>
    </div>
</div>
</div>
//tried to use suggestion I found here - with set timeout
$("#inputString").keyup(function(e){
    clearTimeout($.data(this, 'timer'));
    if (e.keyCode == 13)
      search(true);
    else
      $(this).data('timer', setTimeout(search, 100));
    e.preventDefault();
});      

function search(force) {
    var existingString = $("#inputString").val();
    if (!force && existingString.length < 1) return; 
    $('.res_items').slideDown('normal');
        dataString = $("#search").serialize();
        $.ajax({
            type:"POST",
            data:dataString,
            url: searchsuggest.php',

            success:function(data){

                if(data.success == 'yes'){
                    $('.res_items').show().load(' .inner_slide', {results:data.items});
                }
            },
            error: console.log('error')
        });
}

and then in ajax part I have a query with LIKE - which gives slower results

SELECT id, items FROM games WHERE itmes LIKE '".trim($_POST['keywords'])."%'" 
and output json data: 
$arr = array('success' => "yes", 'items' => $find_items);
header('Content-type: application/json');    
echo json_encode($arr);   
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-01-24 11:46:54

在jQuery或php代码中没有什么可做的。我认为一个可能的解决方案是将您的查询限制在前50/100结果上。我认为这可能足以作为建议来展示。

每个请求传输大量数据将花费大量时间(这就是为什么在数据网格上建议分页),然后将数据写入html页面也会花费一些时间。您还可以尝试在sql表上建立索引(如果还没有索引)。

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

https://stackoverflow.com/questions/21330030

复制
相关文章

相似问题

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