使用PHP/AJAX加载动态文件时出现问题
我已经为我们的客户创建了一个相当安全的登录页来下载他们的合同副本 点击retrieve.php,将显示EULA jQuery对话框。签名并接受后,jQuery对话框将消失 将向服务器发送一个AJAX调用以获取哈希文件名,并生成一个链接以在浏览器中安全地查看PDF 问题是,现在公司想让我添加一个JPG版本的合同。合同可以是2页或3页,这取决于他们希望与我们一起使用的服务 我遇到的问题是如何为jpg版本生成正确数量的链接?一切都是在AJAX中完成的,我不想返回AJAX中的图像数量 图像名称与pdf-.jpg的哈希相同 有没有人有一个动态的方法来做到这一点 我用PHP编写了一个函数来实现这一点,但由于我在客户端运行链接生成,所以它无法工作 我的问题是: 我你就是我,你会通过JSON返回所有3或4个链接pdf+,不管有多少JPG? 您是否会将页面数以json格式传递回去并动态创建链接? 你有更好的解决办法吗 一些代码: 下面是一个AJAX调用,GET将信息发送到服务器,然后创建链接:使用PHP/AJAX加载动态文件时出现问题,php,ajax,json,pdf,Php,Ajax,Json,Pdf,我已经为我们的客户创建了一个相当安全的登录页来下载他们的合同副本 点击retrieve.php,将显示EULA jQuery对话框。签名并接受后,jQuery对话框将消失 将向服务器发送一个AJAX调用以获取哈希文件名,并生成一个链接以在浏览器中安全地查看PDF 问题是,现在公司想让我添加一个JPG版本的合同。合同可以是2页或3页,这取决于他们希望与我们一起使用的服务 我遇到的问题是如何为jpg版本生成正确数量的链接?一切都是在AJAX中完成的,我不想返回AJAX中的图像数量 图像名称与pdf-
$.ajax({ type: 'POST',
url: 'getContractAJAX.php',
data: {
'pin' : pin.val(),
'name' : signature.val().toUpperCase(),
'lead' : '<?php echo $_GET['lead']; ?>'
}, /* end data */
cache: false,
success: function(contractId) {
if (contractId['success'] == true) {
contractExpireDate = new Date(contractId['contractExpDate']);
today = new Date();
// Log the signature.
$.post('log.php', {
signature: $("#electronicSignature").val().toUpperCase(),
pin: $("#eSpin").val(),
lead: '<?php echo $_GET['lead']; ?>',
method: 'SIGNATURE'},
function(log) {
if(log['success'] == true) {
/* DOWNLOAD IMAGES LINKS */
$("#downloadLinks").prepend("<a href='#' onclick='log(\""+contractId['contract']+"\", \"DOWNLOAD\");'><img src='img/btnDownloadPdf.png' alt='Downdload PDF' /><br />Download Contract in Adobe © PDF</a>");
} else {
alert("There was a problem! Please contact customer support.");
showDisclosure();
} /* end else */
}); /* end function(log) */
$("#dialog-confirm").dialog("close");
为什么不返回所有图像的单个压缩文件tar、zip等?这将为您提供一次下载,并使下载速度更快/更小。请提供一些代码?我们不是天才在计算你的代码,图像名称应该是相同的散列为pdf页。jpg。。。我把它放在大于和小于的符号中,然后被过滤了……当然……这是一个巨大的脚本,所以我将尝试突出显示有问题的部分。这不完全是用户友好的。老板对他的要求非常明确。他想要一个指向PDF的链接,或者一个指向JPG版本的2页或3页的链接。@马克,我不认为这对用户不友好-我想说任何保存点击的东西都会是友好的。但是考虑到这些限制并查看您的代码,我只想在JSON中添加一个“images”键或其他内容,并输出一个链接到下载的缩略图列表。
if (isset($_POST['pin']) && isset($_POST['name']) && isset($_POST['lead'])){
$pin = $_POST['pin'];
$name = trim($_POST['name']);
$email = $converter->decode($_POST['lead']);
/*
*
*
* PDO
*
*
*/
$stmt = $dbh->prepare("SELECT contract, contractExpireDate
FROM users
WHERE emailAddress=:email AND
pin=:pin AND
concat(firstName, ' ', lastName) LIKE :name AND
contractExpireDate > NOW()
LIMIT 1");
if ($stmt->bindParam(':email', $email, PDO::PARAM_STR) &&
$stmt->bindParam(':pin', $pin, PDO::PARAM_INT) &&
$stmt->bindParam(':name', $name, PDO::PARAM_STR)) {
$stmt->execute();
$found = 0;
foreach ($stmt->fetchAll(PDO::FETCH_ASSOC) as $el) {
$found++;
$contract = $el['contract'];
$contractExpDate = $el['contractExpireDate'];
}
$stmt = null;
}
if ($found > 0) {
$success = true;
} else {
$success = false;
$error = "NO MATCHES FOUND >>> $email >>> $pin >>> $name";
}
}else{
$success = false;
$error = "NOT ALL PASSED";
}
header('Content-type: application/json');
$json = array("contract" => $contract,
"contractExpDate" => $contractExpDate,
"success" => $success,
"messege" => $error);
echo json_encode($json);