Я пытаюсь написать программу, в которой моя веб-страница создает множество qr-кодов, которые можно сохранить в pdf для печати. Коды qr создаются как изображения и добавляются в #qrcode_top
. Для того чтобы я отправил изображения на сервер для создания PDF с TCPDF
, я создаю массив со всеми потоками изображений. Обратите внимание, что программа генерации кода qr (jquery.qrcode
) не создает простые потоковые (src
) ссылки. Это не проблема, так как я успешно создал массив и отправил его на сервер, используя AJAX
:
$(document).on("click", "#create_qr_codes_pdf", function(ev) {
ev.preventDefault();
//Placing all streams in array
var qr_array = [];
for (var i = 0; i < $("#qrcode_top img").length; i++) {
qr_array.push($('#code' +i+' img').attr('src'));
}
$.ajax({
url: 'server/qr_id_create.php?create_qr_codes_pdf',
type: 'POST',
datatype: 'json',
data: {qr_array: qr_array},
success: function(data) {
//Open pdf in new tab.
window.open("server/qr_id_create.php?create_qr_codes_pdf");
}
});
});
Я получаю массив в php со следующим:
$qr_images = $_POST['qr_array'];
//or
$qr_images = $_REQUEST['qr_array'];
//and doing something with each element in array:
foreach ($qr_images as $qr) {
$string = preg_replace('/^[^,]*,\s*/', '', $qr);
$img = base64_decode($string);
$pdf->Image('@'.$img);
$pdf->AddPage();
}
Проблема в том, что я продолжаю получать следующую ошибку: Notice: Undefined index: qr_array in...
, которая отображает один из моих циклов for: Warning: Invalid argument supplied for foreach()...
Странная вещь, когда я возвращаю $qr_images
, используя print_r($qr_images)
массив правильно отображается. Я даже протестировал добавление потока вручную в pdf, чтобы создать изображение следующим образом:
$img = 'data:image/png;base64,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';
$img = preg_replace('/^[^,]*,\s*/', '', $img);
$img = base64_decode($img);
$pdf->Image('@'.$img);
Но это не делается напрямую с моим массивом. Поэтому я предполагаю, что где-то есть проблема с кодированием и декодированием массива вида AJAX, или я неправильно называю его в php. Любая помощь будет оценена!