У меня проблемы с автозаполнением jQuery … не важно, что я делаю, это не работает …
Я использую кодировку json для заполнения списка, но даже если JSON имеет правильный формат, он ничего не делает.
Вот мой код:
search_pms_clients.php
<?php
require_once( 'core.php' );
header('Content-type: application/json; charset=utf-8');
class cliente_json {
var $value;
var $label;
function __construct($label, $value, $nombre, $telefono, $zona){
$this->label = $label;
$this->value = $value;
}
}
if (isset($_GET['term'])){
$return_arr = array();
$client = trim(strip_tags($_GET['term']));
$query = "SELECT tb1.nombre, tb1.id FROM (SELECT DISTINCT nombre, id FROM pms_clients UNION SELECT DISTINCT nombre, id FROM pms_clientsv) AS tb1 WHERE tb1.nombre LIKE '%" . $client . "%' ORDER BY tb1.nombre;";
$result = db_query_bound( $query );
// Retrieve and store in array the results of the query.
while ( $row = db_fetch_array( $result )){
array_push($return_arr, new cliente_json(utf8_encode(trim($row['id']) . ' - ' . trim($row['nombre'])), utf8_encode(trim($row['id'])) ));
}
print_r(json_encode($return_arr));
}
?>
php страница звонит:
<script type="text/javascript">
$(function() {
//autocomplete
$(".client_select").autocomplete({
//source: "search_agenda.php",
source: "search_pms_clients.php",
minLength: 3,
select: function ( event, ui ) { // What happens when an autocomplete result is selected
console.log('HI');
},
change: function( event, ui ) {console.log('test');}
});
});
</script>
//more non-related code
<input tabindex="5" type="text" name="custom_field_96" size="55" maxlength="255" class="custom_field_0 client_select" value="">
Полученный JSON хорошо отформатирован (проверено на http://www.freeformatter.com/json-validator.html):
Например, вызов search_pms_clients.php? Term = alan% 20b создает этот json:
[{"value":"49006","label":"49006 - ALAN BAILEY","nombre":"ALAN BAILEY","telefono":"","zona":""},{"value":"59249","label":"59249 - ALAN BALDWIN","nombre":"ALAN BALDWIN","telefono":"","zona":""},{"value":"59164","label":"59164 - ALAN BALDWIN","nombre":"ALAN BALDWIN","telefono":"","zona":""},{"value":"26774","label":"26774 - ALAN BENTLEY","nombre":"ALAN BENTLEY","telefono":"02087485900","zona":""},{"value":"23989","label":"23989 - ALAN BENTLY","nombre":"ALAN BENTLY","telefono":"02087485900","zona":""},{"value":"6265","label":"6265 - ALAN BERRYMAN","nombre":"ALAN BERRYMAN","telefono":"","zona":""},{"value":"12726","label":"12726 - ALAN BICKLE","nombre":"ALAN BICKLE","telefono":"","zona":""},{"value":"1002","label":"1002 - ALAN BLAKENEY","nombre":"ALAN BLAKENEY","telefono":"01883 334577","zona":""},{"value":"79164","label":"79164 - ALAN BROOKS","nombre":"ALAN BROOKS","telefono":"","zona":""},{"value":"5734","label":"5734 - MR ALAN BURNS","nombre":"MR ALAN BURNS","telefono":"","zona":""},{"value":"88494","label":"88494 - MR. ALAN BARNETT","nombre":"MR. ALAN BARNETT","telefono":"","zona":""},{"value":"49771","label":"49771 - MR. ALAN BENTLEY","nombre":"MR. ALAN BENTLEY","telefono":"0208 748 5900","zona":""},{"value":"55117","label":"55117 - MR. ALAN BOWIE","nombre":"MR. ALAN BOWIE","telefono":"","zona":""}]
Если я использую простой массив вместо моего JSON, он работает хорошо (более или менее так же, как здесь: http://jqueryui.com/autocomplete/#default)
И если я заменю исходную строку на это:
source: function( request, response ) {
$.ajax({
url: "http://gd.geobytes.com/AutoCompleteCity",
dataType: "jsonp",
data: {
q: request.term
},
success: function( data ) {
response( data );
}
});
},
это также работает безупречно …
Что я делаю неправильно? Если бы кто-то мог помочь мне, я был бы очень признателен.
Я использую jQuery 1.10.2 и jQuery UI 1.11.1
Задача ещё не решена.
Других решений пока нет …