Javascript 使用.print()函数时,AJAX返回空页

Javascript 使用.print()函数时,AJAX返回空页,javascript,jquery,ajax,Javascript,Jquery,Ajax,我用AJAX编写了打印页面的脚本。我和这狗屎搏斗了三天,但我不知道这有什么问题 如果我生成空白页并手动打印,就可以了 如果我生成空白页并在脚本中使用.print()函数打印它,它将返回空白页 怎么了 $.post({ type: "POST", url: "create.php", data: {pid: pid, price: price, contractor: contractor, netto: netto, brutto: brutto, delivery: d

我用AJAX编写了打印页面的脚本。我和这狗屎搏斗了三天,但我不知道这有什么问题

如果我生成空白页并手动打印,就可以了

如果我生成空白页并在脚本中使用.print()函数打印它,它将返回空白页

怎么了

$.post({
    type: "POST",
    url: "create.php",
    data: {pid: pid, price: price, contractor: contractor, netto: netto, brutto: brutto, delivery: delivery, amount: amount},
}).done(function() {
    $.post({
        type: "POST",
        url: "generate.php",
        data: {pid: pid},
    }).done(function(data) {
        printPage = window.open('');
        printPage.document.writeln('<html><head><link rel="stylesheet" type="text/css" href="offer.css" /></head><body>' +data+ '</body></html>');
        printPage.document.close();
        printPage.focus();
        printPage.print();
        printPage.close();  
    });
});
$.post({
类型:“POST”,
url:“create.php”,
数据:{pid:pid,price:price,contractor:contractor,netto:netto,brutto:brutto,delivery:delivery,amount:amount},
}).done(函数(){
美元邮政({
类型:“POST”,
url:“generate.php”,
数据:{pid:pid},
}).完成(功能(数据){
printPage=窗口。打开(“”);
printPage.document.writeln(“”+数据+“”);
printPage.document.close();
printPage.focus();
printPage.print();
printPage.close();
});
});

我只是尝试模拟行为,你是对的。它打印空页。原因是您正在呈现页面之前执行print()

如果你更换

printPage.print();
printPage.close();


它将打印内容。我个人不喜欢setTimeout这类解决方案,但这只是为了说明代码的错误。

如果您使用console.log(数据),它会显示任何内容吗?如果我删除print()函数并在新的空白窗口中打开数据,我将使用正常内容。问题在于印刷。我总是看到空白页面。如何在加载后以更好的方式打印页面?好吧,您可以用window.open('generate.php?pid='+pid,'.\u blank')替换整个post以生成.php,在php中,您可以呈现页面并在document ready事件中添加打印语句。
setTimeout(function(){
     printPage.print();
     printPage.close();
}, 2000);