PHP/jQuery Ajax/Sessions仅在Android版Chrome上有奇怪的行为


PHP / jQuery Ajax / Sessions Strange behaviour only on Chrome for Android

在我的空闲时间项目中,我一直在努力解决一些奇怪的问题。这是我的第一个"大"PHP/JS项目,老实说,我是第一次使用ajax,所以我可能只是错过了一些东西。

不管怎样,事情就是这样。我正在使用PHP和jQuery技术与mPDF库编程一个非常简单的发票系统,从HTML/CSS生成一个PDF文件。我主要使用发送到mPDF的模板中的会话变量来生成PDF发票。

我遇到的问题是安卓版Chrome,在OnePlus One的最新版本上进行了测试。会话变量不会显示在PDF本身中。我认为它完全随机地工作了一两次。我的安卓设备和谷歌浏览器的朋友也证实了同样的问题。

test.php:

<?php
session_start();
error_reporting(E_ALL);
if (!isset($_SESSION['GLO_IS_LOGGED_IN'])) {
    header("Location: index.php");
    exit;
}
include('libs/mPDF/mpdf.php');
ob_start();
include('protected/templates/template.php');
$data = ob_get_clean();
$mpdf = new mPDF();
$mpdf->WriteHTML($data);
$mpdf->Output('protected/invoices/Faktura ' . date('j-m-Y-H-i-s') . '.pdf');
$mpdf->Output('Faktura ' . date('j-m-Y-H-i-s') . '.pdf', 'D');
unset($_SESSION['VAR_DESCRIPTION_ARRAY']);
unset($_SESSION['VAR_AMOUNT_ARRAY']);
unset($_SESSION['VAR_PRICE_ARRAY']);
unset($_SESSION['VAR_TO_ADDRESS']);
unset($_SESSION['VAR_INVOICE_NUMBER']);

下面是generateInvoice.php文件,您可能在发票脚本.js中注意到:

<?php
session_start();
error_reporting(E_ALL);
if (!isset($_SESSION['GLO_IS_LOGGED_IN'])) {
    header("Location: index.php");
    exit;
}
if (!empty($_POST['invoice-number'])) {
    $_SESSION['VAR_INVOICE_NUMBER'] = trim($_POST['invoice-number']);
} else {
    echo('Please add invoice number');
    exit;
}
if (!empty($_POST['to-address'])) {
    $_SESSION['VAR_TO_ADDRESS'] = ($_POST['to-address']);
} else {
    echo('Internal Error');
    exit;
}
$_SESSION['VAR_DESCRIPTION_ARRAY'] = $_POST['invoice-description'];
$_SESSION['VAR_AMOUNT_ARRAY'] = $_POST['invoice-amount'];
$_SESSION['VAR_PRICE_ARRAY'] = $_POST['invoice-price'];

我不想把这篇文章写得太长,所以我将停止在这里发布任何代码片段。相信我,我已经尽了我所能去了解自己发生了什么,我自己也弄不清楚,我需要寻求别人的帮助,这感觉真的很糟糕。无论如何,感谢您的反馈和帮助。干杯

'invoice-form'不包含任何字段-输入标记应在表单

各位,我想我已经找到了解决方案。

test.php的末尾注释掉所有未设置的方法解决了Chrome for Android的问题。

我一开始就不明白为什么会发生这种事。为什么在生成发票之前未设置会话变量?他们不应该是,对吧?或者我真的错过了什么?我知道我不应该在自己的回答中要求澄清,但我认为在这一点上我真的需要澄清

干杯,感谢IanMcL解决了我的Edge问题!