我有以下功能,可以在我测试的几台PC上正常工作。我在Chrome,IE& Firefox没有问题。但是,有一个特定的PC(运行Chrome),它会抛出此错误“Uncaught TypeError:无法读取未定义的属性'文档'”:
win.document.write(data);
可能是因为胜利是空的吗?
如果是这样,为什么这台PC会出现这种情况?
是否需要设置一些Chrome设置?
方法:
function viewReport() {
console.info('generating event report');
var frmData = $('#frmEventReport').serializeArray();
var rptName = 'EventReport' + Math.floor((Math.random() * 100) + 1);
console.info('generated random report name ' + rptName);
$.ajax({
//type: "GET",
timeout: 120000,
url: '@Url.Action("EventReport", "Reports")',
data: frmData,
success: function (data) {
console.info('succesfully called back');
var win = window.open('', rptName, '_blank');
console.info('opening window');
win.document.write(data);
},
error: function (x, y, z) {
console.info(x + ' ' + y + ' ' + z);
}
});
}
答案 0 :(得分:15)
该PC的Chrome上是否启用了弹出式窗口?如果不是,则无法创建新窗口,因此win
为undefined
答案 1 :(得分:0)
出现此错误是因为系统中禁用了弹出式窗口。因此请通过系统的设置选项启用弹出式窗口。
答案 2 :(得分:0)
这是因为在异步ajax请求成功完成后尝试创建弹出窗口时,win
得到undefined
。因此,您可以添加async:false
,如下所示:
function viewReport() {
console.info('generating event report');
var frmData = $('#frmEventReport').serializeArray();
var rptName = 'EventReport' + Math.floor((Math.random() * 100) + 1);
console.info('generated random report name ' + rptName);
$.ajax({
//type: "GET",
timeout: 120000,
url: '@Url.Action("EventReport", "Reports")',
data: frmData,
async:false,
success: function (data) {
console.info('succesfully called back');
var win = window.open('', rptName, '_blank');
console.info('opening window');
win.document.write(data);
},
error: function (x, y, z) {
console.info(x + ' ' + y + ' ' + z);
}
});
}