我已經創建了一個相當安全的登錄頁面,供我們的客戶下載他們的合同副本。使用PHP/AJAX加載動態文件時出現問題
你碰到了retrieve.php,EULA(jQuery對話框)出現了。簽名並接受後,jQuery對話框消失。
將AJAX調用發送到服務器以獲取哈希文件名,並生成鏈接以在瀏覽器中安全地查看PDF。
問題是,現在該公司希望我添加一個JPG版本的合同。合同要麼是2頁,要麼3頁,這取決於他們想要使用的服務。
我遇到的問題是如何爲jpg版本生成正確數量的鏈接?一切都是在AJAX中完成的,我不想從AJAX中返回圖片的數量。
圖像名稱(相同的散列爲PDF) - JPG
沒有任何人有一個動態的方式做到這一點?
我寫了一個函數,在PHP中這樣做,但由於我在客戶端運行鏈接生成,它不會工作。
我的問題是: 我你是我,你會通過JSON返回所有3或4個鏈接(pdf +但是很多jpgs)嗎?
你會將頁面數回傳給json並動態創建鏈接嗎? 你有更好的解決方案嗎?
一些代碼: 這裏是AJAX調用,獲得發送信息到服務器,然後創建鏈接:
$.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");
getContractAJAX.php:
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);
一些代碼請嗎?我們不是天才,在計算出我們的代碼大聲笑 – Neal 2011-03-23 20:30:25
圖像名稱應該是(與pdf相同的哈希) - (page#)。jpg ...我把它放在大於和小於符號的位置,然後過濾.... – Mark 2011-03-23 20:33:01
顯示一些代碼! – Neal 2011-03-23 20:33:52