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 格式。它只是不将其保存到文件中,而是将其保存在内存中。

它将所有imports 转换为requires。

如果您在调试器中运行汇总,您可以轻松看到它。

您必须在rollup.config.js 文件的开头设置断点。启动调试器并等到在断点处停止,然后您将看到生成的rollup.config.js 的内存副本的源代码,而不是原始的。

【讨论】:

以上是关于ajax为啥不能导出文件的主要内容,如果未能解决你的问题,请参考以下文章

oracle exp命令为啥不能用

为啥我的音频文件不能在 Firefox 中播放?

为啥heidisql 我的表明不能在库名下面显示

Ajax异步请求返回文件流(eg:导出文件时,直接将导出数据用文件流的形式返回客户端供客户下载)

亿图图示为啥不能保存成jpg格式

为啥我不能使用 BabelJS 使用“import ... as”导入默认导出