ajax为啥不能导出文件
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ajax为啥不能导出文件相关的知识,希望对你有一定的参考价值。
Ajax直接调用后台的下载方法是导出不了文件的,原因是ajax无法接收后台的文件流,所以,需要再次用window.location=url或者window.open(url)下载; 但是这样操作会有弊端,导出方法会调用两次,第一次是ajax进入导出方法,没有报错的话,就第二次进入方法,所以不如直接用 window.location=url 下载 参考技术A 用普通的url请求,浏览器可以很容易下载保存文件。
例如:
<a href="xxx.rar">xxxrar</a>
window.open="xx.rar"
但是ajax为什么就不能下载呢?
$.ajax(
url:"xx.rar",
type:"post",
contentType:"application/vnd.ms-excel"
);本回答被提问者采纳 参考技术B 下载需要浏览器识别http头为文件,ajax的数据交互会将其解析为json,不能导出
为啥我不能在汇总配置文件中使用 ES6 导入/导出?
【中文标题】为啥我不能在汇总配置文件中使用 ES6 导入/导出?【英文标题】:Why can't I use ES6 import/export in Rollup config files?为什么我不能在汇总配置文件中使用 ES6 导入/导出? 【发布时间】:2020-06-18 05:25:23 【问题描述】:在汇总文档中,有一个基本教程可以帮助您创建第一个包。有一个说明:
注意:汇总本身处理配置文件,这就是我们能够 使用导出默认语法——代码没有被转译 Babel 或类似的东西,所以你只能使用 ES2015 的特性 在您运行的 Node.js 版本中受支持。
我讨厌当我很好地遵循某件事然后到达我不完全理解的一两句话时。这个 sn-p 就是这种情况。
教程示例显示我可以使用 ES6 模块语法编写配置。 “Rollup 本身处理配置文件”,这是一个精确的陈述还是仅仅意味着 Rollup 在幕后做了一些事情? “代码没有被转译”,“您只能使用您正在使用的节点版本支持的 ES2015 功能”,这是否意味着 Rollup 正在使用节点来处理配置文件?但我认为 node 还不支持 ES6 模块。
有人能以更精确的方式解释这个 sn-p,并准确详尽地说明它的含义吗?
【问题讨论】:
这只是意味着 Rollup 手动解析配置文件,而不使用任何花哨的 node.js 功能或像 Babel 这样的转译器。因此,Rollup 对导出语法的支持由其程序员硬编码到 rollup 中(同样,不依赖于任何 javascript 功能,Rollup 可以用 PHP 编写,它仍然支持导出语法,因为 Rollup 的程序员编写了代码来解析它) .但是,任何来自 ES6 的其他功能,例如类和解构,都需要您使用 Node.js 或支持它的转译器,因为 Rollup 的开发人员没有为它编写代码 我认为“自身进程”的非正式意思很清楚,“嘿,我是编写 Rollup 的人,我编写代码来读取文件中的每个字节,我手动和亲自编写代码手动解析” 感谢您的解释。我认为这些东西是隐含的,但并不是每个人都能始终理解隐含的内容,尤其是在实施方面。 【参考方案1】:实际上,Rollup 确实在执行之前将配置文件转换为 commonjs 格式。它只是不将其保存到文件中,而是将其保存在内存中。
它将所有import
s 转换为require
s。
如果您在调试器中运行汇总,您可以轻松看到它。
您必须在rollup.config.js
文件的开头设置断点。启动调试器并等到在断点处停止,然后您将看到生成的rollup.config.js
的内存副本的源代码,而不是原始的。
【讨论】:
以上是关于ajax为啥不能导出文件的主要内容,如果未能解决你的问题,请参考以下文章