【发布时间】:2011-07-04 16:36:19
【问题描述】:
我有以下锚标记,当按下它时,成功调用控制器 (main) 中的函数 (my_pdf)。
<a href="main/my_pdf">Press Me</a>
这是主控制器中的功能:
function my_pdf()
{
$this->load->helper('dompdf');
$this->load->helper('file');
$html = "<p>Testing</p>";
pdf_create($html, 'somefilename');
echo "Your PDF has been created.";
}
DOMPDF library 在被锚标记调用或从 URI 浏览到控制器/函数时按预期工作并创建文件“somefilename.pdf”,如下所示:
http://localhost/main/my_pdf
但是,我需要从 jQuery AJAX 请求调用此函数,而不是锚点。这是html:
<div id="pdf"><img src="assets/images/pdf-icon.gif" /></div>
<div id="notice"></div>
并支持 jQuery:
$('#pdf').click(function(){
$.ajax({
url: 'main/my_pdf',
type: 'POST',
success: function(msg) {
$('#notice').html(msg);
}
});
return false;//toggled this between true/false and still not working
});
如果我在 my_pdf 函数中注释掉 pdf_create 调用,我确认 AJAX 调用会按预期返回回显字符串。问题是当我使用 AJAX 调用 main/my_pdf 时,没有创建 pdf。事实上,pdf_create 似乎返回了一长串代码,很可能应该用于呈现 pdf。 AJAX 成功消息返回以下字符串:
%PDF-1.3 1 0 obj > endobj 2 0 obj > endobj 3 0 obj > >> /MediaBox [0.000 0.000 612.000 792.000] >> endobj 4 0 obj [/PDF /Text] endobj 5 0 obj > endobj 6 0 obj > endobj 7 0 obj > stream 0.000 0.000 0.000 rg BT 34.016 723.208 Td /F1 12.0 Tf [(测试)
我愿意接受任何建议。
【问题讨论】:
-
%PDF-1.3 ...的东西是原始 PDF 数据。当您使用<a>元素访问main/my_pdf时,浏览器会执行GET 请求;但是,您的 AJAX 调用正在执行 POST 请求;pdf_create对 POST 请求有什么不同吗?
标签: codeigniter jquery dompdf