使用ajax和Web服务下载文件

时间:2010-04-11 08:45:00

标签: javascript ajax web-services

有第三方网络服务。可用的公共web方法之一是GetDocument()方法。此方法返回Document对象。 Document对象具有File(byte []),ContentType(string)等属性。

我的问题:我可以使用javascript(mootools)+ ajax + JSON订阅此服务,返回文档对象,在这种情况下是excel文档,并强制文件下载?

1 个答案:

答案 0 :(得分:2)

通常,您无法从JavaScript启动下载,但有一个闪存组件Downloadify可以启用客户端文件生成。

所以你可以提供从HTML / JavaScript下载的文件。

解决了这个问题后,您仍然遇到如何从源Web服务获取您希望提供的数据的问题。

第三方暗示XSS(跨站点脚本),这是使用XmlHttpRequest(Ajax)的禁忌。

此问题的可能解决方案可以使用常见的隐藏IFrame技术来获取数据。

只需要一个正确发布到Web服务的相应(隐藏?)表单,并将其action指向一个隐藏的IFrame元素,在该元素上捕获Load事件并解析返回的数据。

但是目前的浏览器有不同级别的安全措施,限制了您使用外部源访问IFrame的能力,因此您实际上已经被困在这里。抱歉让您满意。

实现您想要做的唯一实用的强大方法是拥有一个本地服务器端脚本,可以充当HTML / JavaScript和外部Web服务之间的代理。

使用这样的代理,您只需回到使用Ajax就可以使用Downloadify来提供数据。

但是,由于您使用服务器脚本来获取数据,为什么不直接从脚本提供数据进行下载?

这些只是我对您提出的问题域的观察。