我正在Umbraco网站上测试以下JavaScript:
<script type="text/javascript">
function doSomething(id, name, userId, siteId, siteName, breadcrumb, documentUrl) {
$.ajax({
type: "POST",
contentType: "application/json; charset=utf-8",
url: "/myService.asmx/DoSomething",
cache: false,
dataType: 'json',
data: "{ 'id' : '" + id
+ "', 'name' : '" + name
+ "', 'userId' : '" + userId
+ "', 'siteId' : '" + siteId
+ "', 'siteName' : '" + sitename
+ "', 'breadcrumb' : '" + breadcrumb + "'}",
success: function () {
window.open(documentUrl);
}
});
}
</script>
我删除了一些东西以留下核心功能代码。对于我在下面讨论的两个场景,实际的Web服务调用都正常工作,它正在打开导致问题的documentUrl
。
现在,当我在运行WinXP和IE7的VM中测试网页时遇到问题。而不是脚本打开一个新窗口并向我显示PDF(或至少给我保存它的选项),我看到一个新的IE实例打开然后关闭的快速闪烁。
当我在IE9中测试同一页面时,在我的Win7笔记本电脑上,并通过Web开发工具栏进行更改以在IE7模式下渲染,我可以看到显示的PDF文件(因为我安装了福昕阅读器)。
我的问题是:为什么在WinXP中window.open()
导致快速显示新的IE窗口然后关闭?
我在两个系统上都看着Fiddler,发现了一个不同之处。在VM下,当请求PDF时,HTTP状态是206,这是部分内容。在IE9下,请求是HTTP 200,而不是206。
有人可以解释一下这里可能会发生什么以及如何修复WinXP IE7实例吗?
我一直在关注WinXP / IE7中的弹出窗口阻止程序设置,并告诉它允许我正在使用的域的弹出窗口。我也禁用了拦截器,无论如何我仍然遇到同样的问题。
答案 0 :(得分:0)
我没有在AJAX配置中包含async : false
。在这之后,IE很高兴,现在显示下载文件对话框。