2016-09-27 12 views
1

jQueryを使用してオートコンプリートを作成しました。これは、mysqlデータベースからjsonでエンコードされたデータを取ります。高速なjQueryオートコンプリートの作成方法

これはうまくいきますが、問題は、mysql dataabseからすべての製品を選択するのに0.0008秒かかりますが、提案を表示するには4〜5秒かかります。ここに私のコードは次のとおりです。

入力:

<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からデータを選択し、それらをエンコードしTHYE 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秒で実行される場合、unlikleyがプロセスの時間のかかる部分であるクエリになるようにします。 – 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); 
     } 
    }); 
}); 

この情報がお役に立てば幸い!

関連する問題