Как я могу добавить кликабельную ссылку в json_encode?
Я сделал текстовое поле с автоматическим заполнением нескольких запросов с помощью jquery. Возможно, это неправильный способ выполнения нескольких запросов, но это все равно работает.
$conn = new PDO("mysql:host = ".DB_SERVER.";port=3306;dbname = ".DB_NAME, DB_USER, DB_PASSWORD);
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$stmt = $conn->prepare('SELECT * FROM azonositok WHERE guid LIKE :term');
$stmt->execute(array('term' => '%'.$_GET['term'].'%'));
while($row = $stmt->fetch()) {
$return_arr[] = $row['guid']; /// I want to link to http://example.com/guid.php
}
$stmt1 = $conn->prepare('SELECT * FROM felhasznalok WHERE fnev LIKE :term');
$stmt1->execute(array('term' => '%'.$_GET['term'].'%'));
while($row1 = $stmt1->fetch()) {
$return_arr[] = $row1['fnev']; /// I want to link to http://example.com/profile.php
}
} catch(PDOException $e) {
echo 'HIBA: ' . $e->getMessage();
}
echo json_encode($return_arr);
}
Если вы сохранили http://example.com и извлекаются те же данные, чтобы сделать ссылку доступной для кликов, следует следовать стандартному HTML-коду ссылки. После того, как эта строка json будет возвращена, добавьте <a href=' before the URL, add '>Описание ссылки</a>` после URL-адреса, полная строка станет <a href='http://example.com>Description of LInk</a>
Это уже пробовал. Но это не работает. Вот результат, если я это сделаю: i.imgur.com/ADoFq65.png






Вам нужно будет добавить функцию, которая будет выполняться при выборе элемента в раскрывающемся списке виджета автозаполнения.
Это делается с помощью свойства select следующим образом:
$(".auto").autocomplete({
source: "search.php",
minLength: 1,
select: function(event, ui) {
window.location.href = ui.item.value;
}
});
Это изменяет местоположение текущего окна на значение выбранного элемента.
Обновлено: Чтобы изменить поведение по умолчанию, когда значение отображается в фокусе/выберите, чтобы вместо этого отображалась метка, вы можете попробовать:
$(".auto").autocomplete({
source: "search.php",
minLength: 1,
select: function(event, ui) {
event.preventDefault();
$('.auto').val(ui.item.label);
window.location.href = ui.item.value;
},
focus: function(event, ui) {
event.preventDefault();
$('.auto').val(ui.item.label);
}
});
Это уже пробовал. Но это не работает. Вот результат, если я это сделаю: i.imgur.com/ADoFq65.png
Используете ли вы автозаполнение пользовательского интерфейса jQuery?
Гм, я использовал это руководство: daveismyname.blog/autocomplete-with-php-mysql-and-jquery-ui
Я отредактировал ответ в соответствии с этим руководством. Надеюсь это поможет.
Спасибо, это работает, но поскольку я комментирую свой вопрос, я хочу разделить URL-адреса «guid» и «profile». Это возможно? поэтому, если результат guid, перейдите на example.com/guid.php, если результат fnev, перейдите на example.com/profile.php
Вы имеете в виду, что когда в таблице azonositok есть результат, он должен использовать столбец guid, а не проверять таблицу felhasznalok?
Нет. На данный момент у меня 2 запроса сразу из таблицы азоноситок и из таблицы фельхазналок. Если в результатах поиска в текстовом поле отображается guid и нажмите на него, я хочу перенаправить пользователя на страницу guid, например: example.com/guid.php, но если в результатах поиска отображается имя пользователя (fnev) и пользователь нажимает на него, тогда перенаправить на example.com/profile.php. Краткое пояснение: если результат поиска из таблицы guid и пользовательский клик, перенаправьте на example.com/guid.php, иначе, если результат из таблицы fnev, перенаправьте на example.com/profile.php.
Может быть, что-то вроде $return_arr[] = ['value' => 'http://example.com/guid.php', 'label' => $row['guid']]; вместо просто $return_arr[] = $row['guid'];. Это отобразит руководство в метке, но перенаправит на http://example.com/guid.php.
Да! Это то, что я хочу сделать. Еще одна вещь, теперь, если я нажму на результат, он заполнит текстовое поле значением (example.com/guid/xyz123456789), а затем перенаправит на страницу guid. Могу ли я скрыть это? Или просто убрать ссылку перед гайдом и показывать только гайд? Поэтому, если я нажму, не заполняйте или показываете только (xyz123456789) в текстовом поле и перенаправляйте на страницу руководства. Ха, извините за мой плохой английский.
Я добавил немного кода в ответ, который, кажется, работает.
JSON — это просто строковый формат, представляющий структуру данных JavaScript. Вы можете положить все, что вам нравится в нем на самом деле. Чтобы что-то было "кликабельно", хотя зависит от интерпретации этой строки