Передача отсканированного QR-содержимого в PHP

У меня есть сканер QR-кода, который уже работает с библиотеками Instascan и Vue.js. Теперь я хочу автоматически опубликовать отсканированный контент в файл php и перенаправить на этот файл php после сканирования, но я не могу передать значение. Вот мой HTML-код:

    <div class = "form-group" id = "app">
        <label v-for = "scan in scans" class = "disptext" style = "font-size: 30px; top: 73%; left: 45%;">Welcome, </label>
        <input v-for = "scan in scans" :key = "scan.date" :title = "scan.content" class = "form-control" id = "qr_user" name = "qr_user" placeholder = "Scan User QR Code" :value = "scan.content" style = "width: auto; font-size: 30px; left: 37%; text-align: center; position: absolute; top: 80%; border: 0; background: transparent;">
        <input type = "hidden" name = "qr" id = "qr" :key = "scan.date" />
    </div>

Я попытался опубликовать его через свой js-файл следующим образом:

    mounted: function () {
    var self = this;
    self.scanner = new Instascan.Scanner({ video: document.getElementById('preview'), scanPeriod: 5 });
    self.scanner.addListener('scan', function (content, image) {
        self.scans.unshift({ date: +(Date.now()), content: content });
        $.post("scanquery.php", {qr: content});
        window.location.assign("scanquery.php");
    });

Но сначала выполняется php, поэтому «qr» всегда не определено. Как я могу это сделать?

Редактировать

Вот код PHP, я только что разместил его, вызвав «qr»:

    $user = $_POST['qr'];
    if (!empty($user)){
        echo $user;
    }

Можем ли мы увидеть и ваш php-код?

Jim B. 24.11.2018 20:10

Уже редактировал, сэр.

Gelo Manalo 24.11.2018 20:16

Вы можете выводить отладочные сообщения в PHP: php.net/manual/en/debugger.php. Если для $ _POST ничего не задано, я думаю, у вас несоответствие форматов полезной нагрузки.

Jim B. 24.11.2018 20:33

Я попытался использовать var_dump () и print_r () для проверки содержимого $ _POST, и все они вернули 0 или null.

Gelo Manalo 24.11.2018 20:42
Стоит ли изучать 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 и хотите разрабатывать...
0
4
553
1

Ответы 1

Вы можете отложить выполнение window.location.assign() до завершения публикации, используя обратный вызов в $.post:

$.post("scanquery.php", {qr: content}, () => {
    window.location.assign("scanquery.php");
});

Я думаю, у вас несоответствие типов полезной нагрузки. $ .post форматирует ваш объект как JSON, а $ _POST недоступен для сообщений JSON.

Этот источник (https://davidwalsh.name/php-json) отмечает, как обрабатывать входящие данные как JSON:

# Get JSON as a string
$json_str = file_get_contents('php://input');

# Get as an object
$json_obj = json_decode($json_str);

Кто-нибудь еще из знатока PHP может поправить меня в этой части.

По-прежнему написано undefined. Я не уверен, что делаю это правильно. Вот мой код php: $ user = $ _POST ['qr']; если (! пусто ($ user)) {echo $ user; } Я получаю это правильно?

Gelo Manalo 24.11.2018 20:02

Подтвердили ли вы, что content и image действительны, прежде чем звонить в $.post?

Jim B. 24.11.2018 20:09

Да, у меня есть. Я отобразил значение содержимого через console.info (), и он определенно возвращает содержимое QR-кода.

Gelo Manalo 24.11.2018 20:10

Хорошо, нам нужно увидеть ваш php-код. Я подозреваю, что это связано с тем, как вы передаете параметры.

Jim B. 24.11.2018 20:11

Можете ли вы проверить, что $_POST действительно правильно установлен на стороне PHP? Он устанавливается для вас только при определенных условиях.

Jim B. 24.11.2018 20:27

Извините, как мне это сделать, сэр?

Gelo Manalo 24.11.2018 20:30

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