2016-09-27 43 views
1

我创建了一个使用jQuery的自动完成功能,它从我的mysql数据库中获取json编码的数据。如何创建一个更快的jQuery自动完成

它运行良好,但问题是,它需要4-5秒来显示建议,即使从mysql数据库中选择所有产品需要0.0008秒。这里是我的代码:

输入:

<form action="product_detail1.php" method="GET"> 
    <input name="search" style="padding: 3px 0px 3px 30px;" type="text" id="skills" class="search1" placeholder="Cerca per codice"> 
    <label style="position: absolute; z-index: 2; top: 4px; left: 3px; font-size: 18px;" for="skills" class="glyphicon glyphicon-search" rel="tooltip" title="search"></label> 
</form> 

自动完成:

$(function() { 
    $("#skills").autocomplete({ 
     source: 'search1.php' 
    }); 
    }); 

和从dataabse选择数据对其进行编码泰丰search1.php文件:

$db = new mysqli($dbHost,$dbUsername,$dbPassword,$dbName); 
$searchTerm = $_GET['term']; 
$query = $db->query("SELECT codice 
        FROM articoli 
        WHERE codice LIKE '".$searchTerm."%' 
        ORDER BY codice ASC"); 
while ($row = $query->fetch_assoc()) { 
    $data[] = $row['codice']; 
} 
echo json_encode($data); 

如果有办法让这个更快,请你能告诉我吗?我在网上搜索,但没有找到办法。谢谢!

+0

如果您尚未创建索引,请在codice字段创建索引。 –

+0

那么,如果查询运行时间为0.0008秒,那么它就会成为查询过程中耗时的部分。 – RiggsFolly

+0

你看过浏览器调试器中的网络选项卡,看看还有什么可能一直在用吗? – RiggsFolly

回答

0

下面是一个解决办法 -

 var skills = new Array();  
    $(document).ready(function() { 
    $.ajax({ 
     url: "search1.php", 
     type: "GET", 
     contentType: contentType, 
     success: function(data, status, xhr){ 
      skills = data; // ["test", "test2", "test3"] 
      $("#skills").autocomplete({ 
        source: skills 
      }); 
     }, error: function(xhr, status, err) { 
      console.error(err); 
     } 
    }); 
}); 

希望这有助于!