Javascript 使用ajax和webservice下载文件
这里有一个第三方Web服务。可用的公共webmethods之一是GetDocument()方法。此方法返回一个文档对象。文档对象具有文件(字节[])、内容类型(字符串)等属性Javascript 使用ajax和webservice下载文件,javascript,ajax,web-services,Javascript,Ajax,Web Services,这里有一个第三方Web服务。可用的公共webmethods之一是GetDocument()方法。此方法返回一个文档对象。文档对象具有文件(字节[])、内容类型(字符串)等属性 我的问题:我是否可以使用javascript(mootools)+ajax+JSON订阅此服务,返回文档对象(在本例中为excel文档)并强制下载文件?确实,通常无法从javascript启动下载,但有一个flash组件,它确实支持客户端文件生成 因此,您可以提供从HTML/JavaScript下载的文件 解决了这个问题后
我的问题:我是否可以使用javascript(mootools)+ajax+JSON订阅此服务,返回文档对象(在本例中为excel文档)并强制下载文件?确实,通常无法从javascript启动下载,但有一个flash组件,它确实支持客户端文件生成 因此,您可以提供从HTML/JavaScript下载的文件 解决了这个问题后,您仍然面临如何从源web服务获取您希望提供服务的数据的问题 第三方意味着XSS(跨站点脚本编写),这是一种禁止使用XmlHttpRequest(Ajax)的方法 这个问题的一个可能的解决方案是使用一种常见的隐藏IFrame技术来获取数据 只要有一个适当的(隐藏的?)表单,它可以正确地发布到web服务,并将它的
操作
指向一个隐藏的IFrame元素,在该元素上捕获加载
事件并解析返回的数据
但是当前的浏览器有不同级别的安全措施,限制了您使用外部源访问iFrame的能力,因此您实际上被困在了这里。很抱歉让你充满希望
要实现您想要做的事情,唯一实用、健壮的方法是使用一个本地服务器端脚本,它可以充当HTML/JavaScript和外部web服务之间的代理
使用这样一个代理,您可以简单地返回到使用Ajax来获取数据,以便下载
但是,既然您使用服务器脚本来获取数据,为什么不直接从脚本中提供数据以供下载呢
这些只是我对你提出的问题领域的观察