Ошибка автозаполнения пользовательского интерфейса jquery — невозможно использовать оператор «in» для поиска «103» в [myarray]

Я пытаюсь использовать jquery-UI для создания автозаполнения.

Мне нужно получить некоторые теги из БД, и я использую этот код для этого:

autocomplete.php

$db = new mysqli('localhost', 'user', 'pass', 'db');

if ($db->connect_errno > 0) {
die('Unable to connect to database [' . $db->connect_error . ']');
}

$all_tags = array();

$query = "select keyword from nickwebd_web_res.resources limit 0,10";
$result = mysqli_query($db, $query) or die(mysqli_error($db));

while ($row = $result->fetch_assoc()) {
$tags = $row['keyword'];
$row_tags = explode(", ", $tags);
$all_tags = array_merge($all_tags, $row_tags);
}

$all_tags = array_unique($all_tags);
sort($all_tags);

$encodedData = json_encode($all_tags);

echo json_encode($encodedData);

и от JS:

var tagInput = $('#keywords');
tagInput.tagEditor({
delimiter: ', ',
autocomplete: {
source: "autocomplete.php"}
});

но если я пытаюсь напечатать, я получаю эту ошибку:

jquery.js: Uncaught TypeError: Невозможно использовать оператор «in» для поиска
‘103’ в [«background», «color», «test»]

Автозаполнение использует этот плагин здесь: https://goodies.pixabay.com/jquery/tag-editor/demo.html

что я тут не так делаю?

спасибо за любую помощь

0

Решение

Я решил это. Вероятно, это не лучшее решение, но оно работает, и я могу жить с этим, так или иначе, для личного проекта.

Вот изменения в файле php:

$encodedData = json_encode($all_tags);

в javascript мне требуется один раз php-файл, содержащий указанную выше переменную, например:

<?php require_once ('autocomplete.php') ?>

а затем я создаю переменную, как показано ниже:

var localSource = <?php echo $encodedData ?>;

и, наконец, я использую эту переменную в качестве источника для автозаполнения:

tagInput.tagEditor({
delimiter: ', ',
autocomplete: {
source: localSource,
position: { collision: 'flip' },
minLength: 2
}
});

и теперь все работает правильно.

0

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

Других решений пока нет …

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