1
<script type="text/javascript"> 
$(function() { 
$("#customers").autocomplete({ 
source: 'search.php' 
}); 
}); 
</script> 
<div class="ui-widget"><input id="customers" name="Cno" placeholder="Customer Name"></div> 

的search.phpJQuery用戶界面自動填充緩慢選擇的元素

<?php include('header.php'); 
//get search term 
$searchTerm = $_GET['term']; 
//get matched data from skills table 
$query = $db->query("SELECT * FROM customers WHERE Customer_Name LIKE '%".$searchTerm."%' ORDER BY Customer_Name ASC"); 
while ($row = $query->fetch_assoc()) { 
$data[] = $row['Customer_Name']; 
} 
//return json data 
echo json_encode($data); 
?> 

對於某些陣列如我在Jquery UI not working properly for some words描述並添加此代碼

$mysqli->set_charset('utf8mb4') 

然後將其不工作細我從下拉列表中選擇元素時遇到問題,將li類轉換爲ui-state-active需要很長時間,如何解決它?

任何幫助將是偉大的!

+0

首先,您的PHP代碼易受SQL注入攻擊。當您查看您的JS控制檯時,您是否看到GET請求是否異常長?您可能需要添加'minLength:3'來幫助減少返回的結果集。 – Twisty

回答

0

在問候你的PHP,我建議:

PHP

<?php 
    include('header.php'); 
    //get search term 
    $searchTerm = $_GET['term']; 
    $data = array(); 
    //get matched data from skills table 
    $query = $db->prepare("SELECT * FROM customers WHERE Customer_Name LIKE '%?%' ORDER BY Customer_Name ASC"); 
    $query->bind_param('s', $searchTerm); 
    $query->execute(); 
    $results = $query->get_result(); 
    while ($row = $results->fetch_assoc()) { 
    $data[] = $row['Customer_Name']; 
    } 
    $query->close(); 
    $db->close(); 
    //return json data 
    header('Content-Type: application/json'); 
    echo json_encode($data); 
?> 

這將幫助防止SQL注入腳本。

在問候你的jQuery的,我會建議:

的JavaScript

$(function() { 
    $("#customers").autocomplete({ 
    minLength: 3, 
    source: 'search.php' 
    }); 
}); 

如果你輸入 'SIM卡' 自動完成將通過GET發送給你的PHP。響應將如下所示:

[ 
    "Bart Simpson", 
    "Homer Simpson", 
    "Lisa Simpson", 
    "Maggie Simpson", 
    "Marge Simpson" 
] 

在您的控制檯中,您應該看到此活動並可以查看執行時間。這將告訴你PHP提供響應請求的時間。這些數據應該立即加載到自動填充中。

如果您看到緩慢,您將不得不確定它是否在您的PHP或JavaScript中。這將決定在哪裏尋找問題。