Результаты поиска автозаполнения интерфейса пользователя JQuery не отображаются

массив Я не получаю результаты поиска из моей базы данных MySQL, используя php.

PHP-код:

require_once "connectmysql.php";
$belongsto=$current_user->businessname;
$q = trim(strip_tags($_GET["term"]));
if (!$q) return;
$sql = "select clientname as value from zb_clients where clientname LIKE '%".$q."%' AND belongsto='".$belongsto."'";
$result = mysql_query($sql);
while($row = mysql_fetch_array($result,MYSQL_ASSOC)) {
$row['value']=htmlentities(stripslashes($row['value']));
$row_set[] = $row;
}
echo json_encode($row_set);

Код JQuery:

<link rel="stylesheet" href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.10.1/themes/base/minified/jquery-ui.min.css" type="text/css" />
<script type="text/javascript" src="http://code.jquery.com/jquery-1.9.1.min.js"></script>
<script type="text/javascript" src="http://code.jquery.com/ui/1.10.1/jquery-ui.min.js"></script>

<script type="text/javascript">
$(function() {

//autocomplete
$("#search").autocomplete({
source: "../searchclient.php",
minLength: 1,
});

});
</script>

Поле ввода:

<input type="text" name="search" id="search" placeholder="Search for Business Name" />

Я считаю, что PHP-код является правильным. Если я запускаю код php самостоятельно и использую
/searchclient.php?term=a

в качестве примера, он возвращает результаты, которые я хочу в массиве.

например [{"value":"Hello World"},{"value":"East Meets West JV"}],

Если я заменю строку Jquery

source: "../searchclient.php",

с

source: [ "c++", "java", "php", "coldfusion", "javascript", "asp", "ruby" ],

тогда автозаполнение работает с этим источником. Поэтому должна быть проблема с передачей массива обратно в JQuery.

Я не могу понять, как это сделать. Я что-то упустил?

Я пробовал отладку с помощью firebug, но он не возвращает никаких ошибок.

Любая помощь будет принята с благодарностью!


Отредактированный код PHP:

require_once "connectmysql.php";
$belongsto=$current_user->businessname;
$q = $_GET["term"];
if (!$q) return;
$sql = "select clientname as value, idzb_clients as id from zb_clients where clientname LIKE '%".$q."%' AND belongsto='".$belongsto."'";
$result = mysql_query($sql);
while($row = mysql_fetch_array($result,MYSQL_ASSOC)) {
$row['id']=htmlentities(stripslashes($row['id']));
$row['value']=htmlentities(stripslashes($row['value']));
$row['label']=htmlentities(stripslashes($row['value']));
$row_set[] = $row;
}
echo json_encode($row_set);

0

Решение

Попробуй это:

$("#search").autocomplete({
source: "../searchclient.php",
minLength: 1,
}).data("autocomplete")._renderItem = function(ul, item) {
return $("<li>").data("item.autocomplete", item).append("<a>" + item.value + "</a>").appendTo(ul);
};
0

Другие решения

Я пошел по маршруту AJAX, и это, похоже, сработало:

HTML

$( "#search" ).autocomplete({
source: function( request, response ) {
$.ajax({
url: "../searchclient.php",
dataType: "json",
data: {
q: request.term
},
success: function( data ) {
response( data );
}
});
},
minLength: 1
});

SEARCHCLIENT.PHP

<?php

require_once "connectmysql.php";
$belongsto = $current_user->businessname;
$q = $_GET['q'];
$sql = "select clientname as value, idzb_clients as id, has_ledger_setup from zb_clients where clientname LIKE '%".$q."%' AND belongsto='".$belongsto."'";
$result = mysql_query($sql);
while($row = mysql_fetch_array($result,MYSQL_ASSOC)) {
$row['id'] = htmlentities(stripslashes($row['id']));
$row['value'] = htmlentities(stripslashes($row['value']));
$row['label'] = htmlentities(stripslashes($row['value']));
$row_set[] = $row;
}
header('Content-Type: application/json');
echo json_encode($row_set);

?>
0

По вопросам рекламы [email protected]