2016-10-26 3 views
0

Я пытаюсь завершить скрипт, который использует автозаполнение jquery.JQuery autocomplete PHP, Ajax и Json

Я написал пользовательскую ФОРМУ, у которой есть текстовое поле, когда пользователь начинает вводить имя компании, функция jquery запускается и выполняет поиск в таблице данных и возвращает любые совпадения в формате json.

Пользователь может затем выбрать требуемое название компании, а затем вставить в текстовый блок. В то же время имя логотипа campany вставляет в текстовое поле anopther в виде файла .png.

Проблема, с которой я столкнулась, заключается в следующем: когда пользователь начинает вводить функции jquery, выполняется, но результат отображает все записи в таблице данных, а не только записи, содержащие то, что пользователь набрал.

Мое имя компании текстовое поле и имя изображения текстовое поле:

<input name="ClientName" placeholder="Client name" class="imaindatesel" id="search-box_1" type="text" size="60" maxlength="40" /> 
<input name="CompanyImage" type="text" id="company_image_1" class="ui-autocomplete-input"/> 

Мои ссылки на JQuery

<link href="../../../../globalscripts/autocomplete/jquery-ui-1.10.4.custom.css" rel="stylesheet" type="text/css" /> 

<script type="text/javascript" src="../../../../globalscripts/jquery-1.10.2.min.js"></script> 

<script type="text/javascript" src="../../../../globalscripts/jquery-ui.js"></script> 

Моя функция JQuery:

$(document).ready(function() {  
$('#search-box_1').autocomplete({ 
source: function(request, response) { 
    $.ajax({ 
     url : 'check_name.php', 
     dataType: "json", 
     data: { 
      name_startsWith: request.term//, 

     }, 
     success: function(data) { 
      response($.map(data, function(item) { 
       var code = item.split("|"); 
       return { 
        label: code[0], 
        value: code[0], 
        data : item 
       } 
      })); 
     } 
    }); 
}, 
autoFocus: true,    
minLength: 3, 
select: function(event, ui) { 
    var names = ui.item.data.split("|");       
    $('#company_image_1').val(names[1]); 

}    
});  

}) 

Мой PHP скрипт

$query = $db->query("SELECT RecordID, CompanyName, ImageName FROM conf_image_depository WHERE CompanyName LIKE '".$_POST['name_startsWith']."%' GROUP BY CompanyName ORDER BY CompanyName ASC"); 


$data = array(); 

while ($row = $query->fetch_assoc()) { 
    $name = $row['CompanyName'].'|'.$row['ImageName']; 
    array_push($data, $name); 
} 

//return json data 
echo json_encode($data); 

В результате вызова Ajax:

["British Airways|British-Airways.png","British Assessment Bureau|british-assessment-bureau.png","British Gas|BritishGas.png","British Sugar|BritishSugar.png"] 

Может кто-нибудь понять, почему, когда пользователь начинает набирать полный список всех записей в таблице данных отображаются.

Большое спасибо заранее за ваше время.

+0

Показать полный код. –

+0

Возможно, вам придется изменить $ _POST TO $ _GET – user2182349

+0

@ user2182349, сменив $ _POST на $ _GET, но я не знаю почему. Но большое спасибо за вашу помощь – DCJones

ответ

0

Многие виджеты автозаполнения используют запросы GET, поэтому изменение кода PHP для чтения параметров GET (или запросов) разрешит проблему.

$ _POST читает POSTed данные, $ _GET считывает параметры GET или querystring.