Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用ajax和webservice下载文件_Javascript_Ajax_Web Services - Fatal编程技术网

Javascript 使用ajax和webservice下载文件

Javascript 使用ajax和webservice下载文件,javascript,ajax,web-services,Javascript,Ajax,Web Services,这里有一个第三方Web服务。可用的公共webmethods之一是GetDocument()方法。此方法返回一个文档对象。文档对象具有文件(字节[])、内容类型(字符串)等属性 我的问题:我是否可以使用javascript(mootools)+ajax+JSON订阅此服务,返回文档对象(在本例中为excel文档)并强制下载文件?确实,通常无法从javascript启动下载,但有一个flash组件,它确实支持客户端文件生成 因此,您可以提供从HTML/JavaScript下载的文件 解决了这个问题后

这里有一个第三方Web服务。可用的公共webmethods之一是GetDocument()方法。此方法返回一个文档对象。文档对象具有文件(字节[])、内容类型(字符串)等属性


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

确实,通常无法从javascript启动下载,但有一个flash组件,它确实支持客户端文件生成

因此,您可以提供从HTML/JavaScript下载的文件

解决了这个问题后,您仍然面临如何从源web服务获取您希望提供服务的数据的问题

第三方意味着XSS(跨站点脚本编写),这是一种禁止使用XmlHttpRequest(Ajax)的方法

这个问题的一个可能的解决方案是使用一种常见的隐藏IFrame技术来获取数据

只要有一个适当的(隐藏的?)表单,它可以正确地发布到web服务,并将它的
操作
指向一个隐藏的IFrame元素,在该元素上捕获
加载
事件并解析返回的数据

但是当前的浏览器有不同级别的安全措施,限制了您使用外部源访问iFrame的能力,因此您实际上被困在了这里。很抱歉让你充满希望

要实现您想要做的事情,唯一实用、健壮的方法是使用一个本地服务器端脚本,它可以充当HTML/JavaScript和外部web服务之间的代理

使用这样一个代理,您可以简单地返回到使用Ajax来获取数据,以便下载

但是,既然您使用服务器脚本来获取数据,为什么不直接从脚本中提供数据以供下载呢

这些只是我对你提出的问题领域的观察