Я пытаюсь преобразовать данные JSON в QR-код, поэтому, когда пользователь сканирует его, должны отображаться данные JSON. Для этого я использовал библиотеку jquery.qrcode.min.js. Вот пример формата данных JSON:
{"id":"4444455551223","tableid":"2222221111111444","areacode":"A0010","catid":"QWAAD"}
p.s id,tableid,areacode,catid они извлекаются динамически из параметра URL
например www.demo.com?id=4444455551223&tableid=2222221111111444&areacode=A0010&catid=QWAAD
Однако проблема, с которой я столкнулся, заключается в том, что когда я сканирую сгенерированный QR-код с помощью мобильного устройства, в результате отображается только «4444455551223», а не все данные JSON. Есть идеи, как это решить?
Код, используемый для создания QR-кода.
jQuery('#output').qrcode( {
const queryString = window.location.search;
const urlParams = new URLSearchParams(queryString);
const id = urlParams.get('id').toString();
const tableid = urlParams.get('tableid').toString();
const areacode = urlParams.get('areacode').toString();
const catid = urlParams.get('catid').toString();
var myJSON = {"id":"'+id+'","tableid":"'+tableid+'","areacode":"'+areacode+'","catid":"'+catid+"}';
// render method: 'canvas', 'image' or 'div'
//render: 'canvas',
// version range somewhere in 1 .. 40
minVersion: 1,
maxVersion: 40,
// error correction level: 'L', 'M', 'Q' or 'H'
ecLevel: 'Q',
// offset in pixel if drawn onto existing canvas
left: 0,
top: 0,
// size in pixel
size: 500,
// code color or image element
fill: '#000',
// corner radius relative to module width: 0.0 .. 0.5
radius: 0,
// quiet zone in modules
quiet: 0,
text: myJSON
} );
});
@RayWallace Я обновил код



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Я не знаю, как вы получили свой код, чтобы дать вам хотя бы одно значение в QR-коде. Ваш код в том виде, в котором он есть, для меня вообще не работал.
Было две основные проблемы:
Вот отредактированный код, который сработал у меня:
// NOTE Your const a var definitions need to be moved out of the .qrcode() function body
const queryString = window.location.search;
const urlParams = new URLSearchParams(queryString);
// NOTE You do not need the .toString(), the paramaters are already strings
const id = urlParams.get('id').toString();
const tableid = urlParams.get('tableid').toString();
const areacode = urlParams.get('areacode').toString();
const catid = urlParams.get('catid').toString();
// NOTE This line has a misplace ' at the end
// NOTE Even then it does not give you anything useful
// var myJSON = {"id":"'+id+'","tableid":"'+tableid+'","areacode":"'+areacode+'","catid":"'+catid+"}';
var myJSON = JSON.stringify( {id, tableid, areacode, catid} )
jQuery('#output').qrcode( {
// version range somewhere in 1 .. 40
minVersion: 1,
maxVersion: 40,
// error correction level: 'L', 'M', 'Q' or 'H'
ecLevel: 'Q',
// offset in pixel if drawn onto existing canvas
left: 0,
top: 0,
// size in pixel
size: 500,
// code color or image element
fill: '#000',
// corner radius relative to module width: 0.0 .. 0.5
radius: 0,
// quiet zone in modules
quiet: 0,
text: myJSON
} );
// NOTE This is an extraneous line
// });
Согласно вашему предложению, я попробовал со своей стороны, но проблема все равно существует. Мобильное устройство считывает номер телефона вместо данных JSON.
Очень странно. Идеально сработало для меня. ... Можете ли вы опубликовать полученное изображение QR-кода?
Когда я запустил свою версию кода, она отобразила этот QR-код: ibb.co/YysZCxX ... Когда я сканирую его, я получаю такой результат: {"id":"4444455551223","tableid":"2222221111111444 ","areacode":"A0010","catid":"QWAAD"}
Когда я ставлю большое число, например 4444455551223, оно работает. В качестве идентификатора я использовал 8-значный номер. Пожалуйста, можете ли вы также проверить 8 цифр на своей стороне.
Я только что удалил 4444 из начала идентификатора, и он тоже работает. Я не вижу в коде ничего, на что бы повлияла длина чисел. Чтобы внести ясность, я использовал: .... www.demo.com/?id=55551223&tableid=2222221111111444&areacode=A0010&catid=QWAAD
Мое устройство IOS. Когда я сканировал на телефоне Android своих друзей, он работал. Так что я думаю, что-то связанное с IOS
Пожалуйста, покажите нам свой код, чтобы мы могли попытаться вам помочь. Невозможно увидеть, что ваш код делает неправильно, если вы не покажете нам свой код.