Как я могу добавить ссылку на json_encode?

Как я могу добавить кликабельную ссылку в 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);
}

JSON — это просто строковый формат, представляющий структуру данных JavaScript. Вы можете положить все, что вам нравится в нем на самом деле. Чтобы что-то было "кликабельно", хотя зависит от интерпретации этой строки

Phil 16.07.2019 05:25

Если вы сохранили http://example.com и извлекаются те же данные, чтобы сделать ссылку доступной для кликов, следует следовать стандартному HTML-коду ссылки. После того, как эта строка json будет возвращена, добавьте <a href=' before the URL, add '>Описание ссылки</a>` после URL-адреса, полная строка станет <a href='http://example.com>Description of LInk</a>

Rajesh Kakkad 16.07.2019 11:47

Это уже пробовал. Но это не работает. Вот результат, если я это сделаю: i.imgur.com/ADoFq65.png

Nathan J 16.07.2019 12:46
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
3
71
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вам нужно будет добавить функцию, которая будет выполняться при выборе элемента в раскрывающемся списке виджета автозаполнения.

Это делается с помощью свойства 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

Nathan J 16.07.2019 12:45

Используете ли вы автозаполнение пользовательского интерфейса jQuery?

quartusk 16.07.2019 13:28

Гм, я использовал это руководство: daveismyname.blog/autocomplete-with-php-mysql-and-jquery-ui

Nathan J 16.07.2019 14:04

Я отредактировал ответ в соответствии с этим руководством. Надеюсь это поможет.

quartusk 16.07.2019 14:48

Спасибо, это работает, но поскольку я комментирую свой вопрос, я хочу разделить URL-адреса «guid» и «profile». Это возможно? поэтому, если результат guid, перейдите на example.com/guid.php, если результат fnev, перейдите на example.com/profile.php

Nathan J 16.07.2019 14:56

Вы имеете в виду, что когда в таблице azonositok есть результат, он должен использовать столбец guid, а не проверять таблицу felhasznalok?

quartusk 16.07.2019 15:50

Нет. На данный момент у меня 2 запроса сразу из таблицы азоноситок и из таблицы фельхазналок. Если в результатах поиска в текстовом поле отображается guid и нажмите на него, я хочу перенаправить пользователя на страницу guid, например: example.com/guid.php, но если в результатах поиска отображается имя пользователя (fnev) и пользователь нажимает на него, тогда перенаправить на example.com/profile.php. Краткое пояснение: если результат поиска из таблицы guid и пользовательский клик, перенаправьте на example.com/guid.php, иначе, если результат из таблицы fnev, перенаправьте на example.com/profile.php.

Nathan J 16.07.2019 16:00

Может быть, что-то вроде $return_arr[] = ['value' => 'http://example.com/guid.php', 'label' => $row['guid']]; вместо просто $return_arr[] = $row['guid'];. Это отобразит руководство в метке, но перенаправит на http://example.com/guid.php.

quartusk 16.07.2019 16:11

Да! Это то, что я хочу сделать. Еще одна вещь, теперь, если я нажму на результат, он заполнит текстовое поле значением (example.com/guid/xyz123456789), а затем перенаправит на страницу guid. Могу ли я скрыть это? Или просто убрать ссылку перед гайдом и показывать только гайд? Поэтому, если я нажму, не заполняйте или показываете только (xyz123456789) в текстовом поле и перенаправляйте на страницу руководства. Ха, извините за мой плохой английский.

Nathan J 16.07.2019 16:25

Я добавил немного кода в ответ, который, кажется, работает.

quartusk 16.07.2019 17:31

Другие вопросы по теме