2016-09-27 79 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); 
     } 
    }); 
}); 

希望這有助於!

相關問題