使用XMLHttpRequest发送异步请求,服务器返回Excel文件,怎么让浏览器弹出文件下载对话框?

火翼凤凰 2008-08-27 11:30:43
使用XMLHttpRequest发送异步请求,请求的参数是一个Document对象,服务器返回一个Excel文件,怎么让浏览器自动弹出文件下载对话框?但使用form发送同步请求,浏览器却可以弹出文件下载对话框

可以取到返回的response对象值,但是使用responseStream取到的是undifined,使用responseText或responseXML取到的是乱码.

使用抓包工具可以导出服务器返回的Excel文件,并且可以正常打开.

请各位高手指点一下,或者有别的解决方法,不妨告诉我,谢谢.

email: zhxp2072@163.com

...全文
773 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
amangoing 2008-12-25
  • 打赏
  • 举报
回复
dujun3245350 2008-08-29
  • 打赏
  • 举报
回复
学习
zzxap 2008-08-29
  • 打赏
  • 举报
回复
Response.ContentType = "application/octet-stream";

Response.AppendHeader("Content-Disposition","attachment;filename=" +
HttpUtility.UrlEncode(fileName,System.Text.Encoding.UTF8) + ";charset=GB2312");
System.IO.FileStream fs= System.IO.File.OpenRead(fullPath);
pipinews 2008-08-28
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 Perfecter 的回复:]
服务器返回excel文件的http地址
然后window.open();
或者
<iframe id="download"> </iframe>
download.src = excel文件的http地址;
[/Quote]..第二種應該可以 ..
火翼凤凰 2008-08-28
  • 打赏
  • 举报
回复

另外有个问题,excel文件的http地址中如果存在中文,就会提示“无法找到该网页”.

这个有什么解决方法没?
火翼凤凰 2008-08-28
  • 打赏
  • 举报
回复

谢谢各位,问题已经解决。

第二种方法确实可以,另外用navigate()方法更加简单。

navigate(excel文件的http地址);

七胖儿 2008-08-27
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 yuxiao2072 的回复:]
试过第一种方法,但是新窗口会被浏览器拦截掉

能把第二种方法说详细点吗?谢谢!
[/Quote]
内置一个iframe
然后显示下载地址,让用户点击下载
火翼凤凰 2008-08-27
  • 打赏
  • 举报
回复
试过第一种方法,但是新窗口会被浏览器拦截掉

能把第二种方法说详细点吗?谢谢!

Peter_Wang 2008-08-27
  • 打赏
  • 举报
回复
服务器返回excel文件的http地址
然后window.open();
或者
<iframe id="download"></iframe>
download.src = excel文件的http地址;

52,799

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 Ajax
社区管理员
  • Ajax
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧