【发布时间】:2014-03-04 06:00:49
【问题描述】:
我正在使用 php 和 ajax 提交表单。表单将 HTML 输出发送到创建 pdf 的不同页面。提交工作正常,但在创建 pdf 后,我似乎无法隐藏等待消息。我尝试了几种不同的方法都没有成功。
表格代码如下:
<div id="message" style="display: none;"></div>
<div id="waiting" style="display: none;">Please wait</div>
<form action="/export-to-pdf" method="POST" id="pdfform" >
<input type="hidden" name="var1" value="<?=$var1;?>">
<input type="hidden" name="var2" value="<?=$var2;?>">
<input type="submit" id="pdfsubmit" name="pdfsubmit" value="Submit">
</form>
这是创建 pdf 的页面中的重要代码:
$pdf->Output('form.pdf', 'D');
$return = array();
$return['success'] = "success";
echo json_encode($return);
这是脚本:
$(document).ready(function(){
$('#pdfsubmit').click(function() {
$('#waiting').show(500);
$('#pdfform').hide(0);
$('#message').hide(0);
$.ajax({
type : 'POST',
dataType : 'jsonp',
url : '/export-to-pdf',
data: serialize(),
success : function(response){
if (response.success == 'success') {
$('#waiting').hide(500);
$('#message').removeClass().addClass((data.error === true) ? 'error' : 'success')
.text(data.msg).show(500);
if (data.error === true)
$('#pdfform').show(500);
}
}
,
error : function(XMLHttpRequest, textStatus, errorThrown) {
$('#waiting').hide(500);
$('#message').removeClass().addClass('error')
.text('There was an error.').show(500);
$('#pdfform').show(500);
}
});
return false;
});
});
当 pdf 可供下载时,会显示“另存为”对话框,但 ajax 消息仍会出现在屏幕上并且永远不会消失。我正在使用 TCPDF 类来构建 pdf 文件。
【问题讨论】:
-
命名不是原因。我仍在为此苦苦挣扎。甚至萤火虫在发布后显示 200 状态,但仍显示等待消息。当我发布到同一页面时,它正在同一站点上工作。显示等待消息,刷新数据,然后隐藏等待消息。我想知道处理我不知道的 PDF 创建是否有什么奇怪的地方。