POST表单到新选项卡.输出格式为PDF
POST Form to new Tab. Output is PDF
我正在写一个为用户生成一些PDF文档的网站。我需要做两件事。
1)当用户点击提交时,在新的选项卡中打开生成的PDF,该PDF在POST响应中返回。
2)对于某些请求,需要刷新原始页面以显示该PDF位于用户的库中。
我想出了这个JS。它正确地提交表单,将输出放在一个新选项卡中,并重新加载页面。
$.ajax({
type: 'POST',
url: '/share/pdf/',
data: $('#pdf_share_form').serialize(),
async: false,
success: function (d) {
var w = window.open();
w.document.write(d);
location.replace('/pdf/');
}
});
问题是document.write()需要HTML,所以PDF显示为一堆二进制字符。
我觉得我需要指出数据应该下载时,写它,但我不知道如何去做。请注意,一些生成的文件是临时的,在从表单POST返回后立即删除,因此我不能执行任何形式的window.open(url)。
感谢@Remy,我对我需要做的事情有了更多的思考。在我写这个问题之前,我实际上有一个标准的jQuery submit()
调用,窗体设置为target="_blank"
。这工作得很好,但我在提交后重新加载页面时遇到了问题。这让我想到了$.ajax()
,这是一个错误的解决方案。
解决方法很简单:
$.when($('#pdf_share_form').submit()).then(function() {
location.replace('/pdf/');
});
<form id="pdf_share_form" action="/share/pdf/" target="_blank" method="post">
<input id="pdf_index" name="pdf_index">
<input id="pdf_name" name="pdf_name">
</form>
相关文章:
- Datetime格式为Friendly Time.Moment JS输出错误
- 有没有一种方法可以从两个标签之间提取文本,并以我选择的格式输出
- 输出文本不't以正确格式显示
- 没有获得 json .save 的输出,格式为 pars.html
- 如果 CreateJS 库支持 Texture Packer 的 JSON 输出格式
- 获取表格格式的 Javascript 输出
- 如何使用 JQuQuery 解析 JSON 对象并在 HTML 页面中以表格格式打印输出
- 如何以绘图表格式输出PHP结果
- 查看不同输出格式时的内容协商
- HTML表单Mailto输出格式
- Nashorn探查器输出格式
- 将REST JSON输出格式化为另一种格式
- 如何更改serializeObject输出格式?
- moment(). toobject()输出格式
- POST表单到新选项卡.输出格式为PDF
- ASP.jQuery UI自动完成的输出格式(显示值标签键对)
- Angular-ui: Date -不同的输出格式
- 输出格式不正确
- 对输出格式使用相同的解析格式
- 节点.js大数字的输出格式