我有"打印"调用ajax的按钮获取并在新窗口中打开页面进行打印。
<button type="button" onclick="getPrint(event , 'Id')">Print</button>
function getPrint(e, Id) {
var url = '/PrintController/Print/' + "?Id=" + id;
$.ajax({
url: url,
async: false,
success: function (data) {
if (data.success == true) {
var mywindow = window.open('', 'Print', 'height=500,width=600,menubar=yes');
mywindow.document.write('<html><head><title></title>');
mywindow.document.write('</head><body >');
mywindow.document.write($('<div></div>').append(data.viewBody).clone().html());
mywindow.document.write('</body></html>');
mywindow.focus();
mywindow.print();
mywindow.close();
}
},
error: function (XMLHttpRequest, textStatus, errorThrown) {
alert(textStatus);
}
});
return;
}
控制器返回如下: -
return Json(new { success = true, viewBody = viewPrintSub }, JsonRequestBehavior.AllowGet);
我第一次点击&#34;打印&#34;按钮,它工作正常。它确实ajax get和control转到action方法并返回成功,然后它返回查看并进入成功函数并打开新窗口,
但是在第二次点击时,它会转到控制器操作方法,然后它会返回成功,然后这次它不会成功或出错。
答案 0 :(得分:0)
你解决了吗?我建议您将缓存设置为false,当然要确保浏览器不会阻止该网站打开多个窗口。
function getPrint(e, Id) {
var url = '/PrintController/Print/' + "?Id=" + id;
$.ajax({
cache: false, // Do not cache
url: url,
async: false,
success: function (data) {
if (data.success == true) {
var mywindow = window.open('', 'Print', 'height=500,width=600,menubar=yes');
mywindow.document.write('<html><head><title></title>');
mywindow.document.write('</head><body >');
mywindow.document.write($('<div></div>').append(data.viewBody).clone().html());
mywindow.document.write('</body></html>');
mywindow.focus();
mywindow.print();
mywindow.close();
}
},
error: function (XMLHttpRequest, textStatus, errorThrown) {
alert(textStatus);
}
});
return;
}