正在尝试下载“Hello world”使用 JS 和 PHP
当我点击链接时,我正在尝试下载 pdf 文件。
这些是我的代码:
function issue_bill(order_id){
$.post('orders/issueBilll?id_order='+order_id,
order_id,
function()
{
$('example').replaceWith('Bill issued');
}
);
}
public function executeIssueBill(sfWebRequest $request)
{
$pdf=new FPDF();
$pdf->AddPage();
$pdf->SetFont('Arial','B',16);
$pdf->Cell(40,10,'Hello World!');
$pdf->Output();
}
当我点击链接时,它不会下载pdf文档。如果我去 Firebug 的检查员,我会在控制台的“响应”部分看到以下内容:
%PDF-1.3
3 0 obj
<</Type /Page
/Parent 1 0 R
/Resources 2 0 R
/Contents 4 0 R>>
endobj
4 0 obj
<</Filter /FlateDecode /Length 72>>
stream
x�3R��2�35W(�r
Q�w3T04�30PISp
�Z*�[����(hx����+���(j*�d��
endstream
endobj
1 0 obj
<</Type /Pages
/Kids [3 0 R ]
/Count 1
/MediaBox [0 0 595.28 841.89]
>>
endobj
5 0 obj
<</Type /Font
/BaseFont /Helvetica-Bold
/Subtype /Type1
/Encoding /WinAnsiEncoding
>>
endobj
2 0 obj
<<
/ProcSet [/PDF /Text /ImageB /ImageC /ImageI]
/Font <<
/F1 5 0 R
>>
/XObject <<
>>
>>
endobj
6 0 obj
<<
/Producer (FPDF 1.53)
/CreationDate (D:20110126103602)
>>
endobj
7 0 obj
<<
/Type /Catalog
/Pages 1 0 R
/OpenAction [3 0 R /FitH null]
/PageLayout /OneColumn
>>
endobj
xref
0 8
0000000000 65535 f
0000000228 00000 n
0000000416 00000 n
0000000009 00000 n
0000000087 00000 n
0000000315 00000 n
0000000520 00000 n
0000000596 00000 n
trailer
<<
/Size 8
/Root 7 0 R
/Info 6 0 R
>>
startxref
699
%%EOF
我应该如何下载该文档?如果我直接调用 issueBill()
方法,下载 pdf 没有任何问题。
I'm trying to download a pdf when i click a link.
These are my codes:
function issue_bill(order_id){
$.post('orders/issueBilll?id_order='+order_id,
order_id,
function()
{
$('example').replaceWith('Bill issued');
}
);
}
public function executeIssueBill(sfWebRequest $request)
{
$pdf=new FPDF();
$pdf->AddPage();
$pdf->SetFont('Arial','B',16);
$pdf->Cell(40,10,'Hello World!');
$pdf->Output();
}
When i click on the link, it doesn't download the pdf document. If i go the inspector of Firebug i get this below in the "Response" section of the Console:
%PDF-1.3
3 0 obj
<</Type /Page
/Parent 1 0 R
/Resources 2 0 R
/Contents 4 0 R>>
endobj
4 0 obj
<</Filter /FlateDecode /Length 72>>
stream
x�3R��2�35W(�r
Q�w3T04�30PISp
�Z*�[����(hx����+���(j*�d��
endstream
endobj
1 0 obj
<</Type /Pages
/Kids [3 0 R ]
/Count 1
/MediaBox [0 0 595.28 841.89]
>>
endobj
5 0 obj
<</Type /Font
/BaseFont /Helvetica-Bold
/Subtype /Type1
/Encoding /WinAnsiEncoding
>>
endobj
2 0 obj
<<
/ProcSet [/PDF /Text /ImageB /ImageC /ImageI]
/Font <<
/F1 5 0 R
>>
/XObject <<
>>
>>
endobj
6 0 obj
<<
/Producer (FPDF 1.53)
/CreationDate (D:20110126103602)
>>
endobj
7 0 obj
<<
/Type /Catalog
/Pages 1 0 R
/OpenAction [3 0 R /FitH null]
/PageLayout /OneColumn
>>
endobj
xref
0 8
0000000000 65535 f
0000000228 00000 n
0000000416 00000 n
0000000009 00000 n
0000000087 00000 n
0000000315 00000 n
0000000520 00000 n
0000000596 00000 n
trailer
<<
/Size 8
/Root 7 0 R
/Info 6 0 R
>>
startxref
699
%%EOF
What should i do to download the document? I don't have any problem to download the pdf if i call directly issueBill()
method.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您不想发出 AJAX 请求(其中响应存储在 JavaScript 变量中),您想要发出普通的 HTTP 请求 - 当有人单击链接或在浏览器地址栏中键入 URL 时发出的请求。
使用 JavaScript 中的
window.location
将用户发送到 PDF 生成器的 URL。如果您想尝试诱骗浏览器在执行此操作时停留在您的页面上,请通过创建指向 PDF 生成器 URL 的 iframe 来发出请求。您还必须伪造内容类型标题,以不告诉浏览器它是 PDF,否则它可能会尝试在窗口中显示它而不是强制下载。
You don't want to make an AJAX request, where the response is stored in a JavaScript variable, you want to make a normal HTTP request -- the kind made when someone clicks a link or types a URL in the browser address bar.
Send the user to the URL of your PDF generator with
window.location
in JavaScript.If you want to try to trick the browser into staying on your page while it does it, make the request by creating an iframe pointing to the URL of your PDF generator. You'll also have to fudge the content-type header to NOT tell the browser it's a PDF, otherwise it might attempt to display it in the window instead of forcing a download.