如何发布到URL并打开一个新窗口以显示pdf格式的响应

How do I Post to a URL and open a new window to show the response which is a pdf

本文关键字:窗口 显示 pdf 响应 格式 新窗口 一个 URL 何发布      更新时间:2023-11-23

我需要通过ajax将大量数据发布到URL(比如生成pdf)。服务器以pdf格式返回生成的报告(不是文件,而是流)。如何打开新窗口来显示内容。对于GET请求,只需执行以下操作即可:

<a href="/generate-pdf?from=xxxx-xx-xx&to=yyyy-yy-yy" target="_blank" >Report from x to y</a>

但由于发送到服务器的数据的大小,我需要进行POST。谢谢

当您打开一个新窗口时,它会向url发出get请求。

你应该得到一个url,里面有关于请求哪个pdf的信息,然后从服务器上加载一个带有该pdf的页面。

它有帮助吗?

这就是我最终要做的:

function generatePdf(){
	var target = document.getElementById('box-1');
	var spinner = new Spinner(opts).spin(target);
	var tree = $("#tree_container").fancytree("getTree");
	var selectedNodes = tree.getSelectedNodes(true)
	var inputs = '';
	$('#report_card_gen_form').remove();//remove any form that might have been created from previous request
	var selectedMarkingPeriod = $( "#marking_period_selector option:selected");
	if(selectedMarkingPeriod.val() == -1){
		inputs += '<input type="hidden" name="school_year_id" value="' + selectedMarkingPeriod[0].dataset.syId + '">';
	}
	else{
		inputs += '<input type="hidden" name="marking_period_id" value="' + selectedMarkingPeriod.val() + '">';
	}
	for(var index = 0; index < selectedNodes.length; index++){
		inputs += '<input type="hidden" name="studentIds[]" value="' + selectedNodes[index].data.id + '">';
		//form.append(selectedNodes[index].data.nodeType + '[]', selectedNodes[index].data.id);
	}
	console.log('form data');
	console.log($(inputs));
	
	$('body').append('<form action="/grades/report-cards" method="POST" name="report_card_gen_form" id="report_card_gen_form"  target="_blank">' + inputs + '</form>');
	$('#report_card_gen_form').submit();
	spinner.stop();
}