Javascript 在打开使用保存的html的报表之前在服务器端保存html不会';我不在野生动物园工作
我提出了一种Javascript,它可以在屏幕上截取报表所需的html,并使用ajax调用将其保存在服务器上,然后通过弹出窗口调用使用以前保存的html的报表。 以下是代码:Javascript 在打开使用保存的html的报表之前在服务器端保存html不会';我不在野生动物园工作,javascript,c#,jquery,cross-browser,dom-events,Javascript,C#,Jquery,Cross Browser,Dom Events,我提出了一种Javascript,它可以在屏幕上截取报表所需的html,并使用ajax调用将其保存在服务器上,然后通过弹出窗口调用使用以前保存的html的报表。 以下是代码: function SaveAndPrintHtml(htmlToPrint) { try { $.ajax({ type: 'POST', async: true, url: 'temp.aspx?Action=Sa
function SaveAndPrintHtml(htmlToPrint) {
try {
$.ajax({
type: 'POST',
async: true,
url: 'temp.aspx?Action=SaveHtmlToPrint', //SAVE DATA TO PRINT
data: {
htmlToPrint: encodeFormData(htmlToPrint)
},
dataType: "json",
success: function() {
try {
var url = 'report.aspx';
window.open(url, '_blank'); //OPEN REPORT
} catch (e) {
}
},
error: handleError
});
} catch (ex) {
alert('Unexpected Error!; \n\r ' + ex.message);
}
其思想是,当用户点击打印按钮从客户端获取html并将其发送到服务器时,保存成功后,在弹出窗口中打开使用以前保存的html的报告。
除了MAC上的Safari之外,这种方法在MAC和PC上测试的所有浏览器上都能正常工作
知道为什么吗
编辑:
当浏览器首次加载(或卸载)页面时,尝试打开弹出窗口的JavaScript代码将失败
考虑到上述声明,Safari可能将在ajax请求后打开弹出窗口的尝试视为初始加载/卸载页面阶段,因此禁止它?弹出窗口拦截器很可能正在阻止您的
窗口。open()
您可能会更幸运地做这样的事情:
function SaveAndPrintHtml(htmlToPrint) {
var $form = $('<form method="post" />');
$form.attr('target', '_blank');
$form.attr('action', 'temp.aspx?Action=SaveHtmlToPrint');
$form.append($("<input type='hidden'/>").val(htmlToPrint);
// grab the form DOM object and submit it - it should open in a new window:
$form[0].submit();
}
函数SaveAndPrintHtml(htmlToPrint){
变量$form=$('');
$form.attr('target','u blank');
$form.attr('action','temp.aspx?action=SaveHtmlToPrint');
$form.append($(“”).val(htmlToPrint);
//抓取表单DOM对象并提交-它应在新窗口中打开:
$form[0]。提交();
}
这应该将包含正确数据的表单发布到正确的url,并打开一个新窗口进行发布。
然后你让你的
temp.aspx
将重定向标题传递到print.aspx
不幸的是,这段代码对我不起作用,我无法在ff或safari上发布即时创建的表单,但感谢你的努力