У меня есть сканер 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: php.net/manual/en/debugger.php. Если для $ _POST ничего не задано, я думаю, у вас несоответствие форматов полезной нагрузки.
Я попытался использовать var_dump () и print_r () для проверки содержимого $ _POST, и все они вернули 0 или null.






Вы можете отложить выполнение 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; } Я получаю это правильно?
Подтвердили ли вы, что content и image действительны, прежде чем звонить в $.post?
Да, у меня есть. Я отобразил значение содержимого через console.info (), и он определенно возвращает содержимое QR-кода.
Хорошо, нам нужно увидеть ваш php-код. Я подозреваю, что это связано с тем, как вы передаете параметры.
Можете ли вы проверить, что $_POST действительно правильно установлен на стороне PHP? Он устанавливается для вас только при определенных условиях.
Извините, как мне это сделать, сэр?
Можем ли мы увидеть и ваш php-код?