
情景:
1、用户发送数据到服务器
2、服务器根据用户的数据生成文档
3、服务器把所生成的文档的下载地址提供给用户
4、用户使用的浏览器自动根据下载地址下载文件
实现:
网上搜索查找了下实现方式,就我查到的大多是这几种。
1、直接使用window.open(); 这种方式会被浏览器拦截。
2、构造表单,使用javascript进行表单提交来下载文件(设置表单的action、method、target属性)。 自己尝试了下,在我机器上安装的谷歌直接拦截,IE会提示是否允许。
3、var tempWindow = window.open();
tempWindow.location="your address";
这种方式浏览器依旧会拦截,且会报location未定义错误。
最后:
在某网站看到有网友回复 把ajax设置为同步方式,可以解决,自己试了下,可以实现无弹窗打开新窗口。
demo:
$.ajax({
type:'POST',
data:send_data,
url:'/demoURL',
success:function(data, status){
if (status === 'success'){
window.open(data);
}
}
});
简单到难以置信。不过,实用。