我有一个JavaScript应用程序需要使用ajax post请求发送到某个URL,然后后端会根据请求中的参数进行相应的工作,生成一个可下载的压缩包,等待下载。必须使用的ajax的原因是这里需要模拟提交表单的动作,因为表单里的数据是在之前查询的时候已经填好的,这里只需要重新将表单里的数据重新提交到新的接口就行,所以必须使用ajax post来实现。但是ajax不能直接支持文件下载,所以在ajax post请求之后,会响应一个json串,里面是需要下载的文件地址,然后再使用js构造form表单进行下载,具体代码如下:
var exportUserDefine = function (e) {
$.ajax({
type: "POST",
url: "/index.php/input/info_export",
data: $("#_form").serialize(),
success: function(response, status, request) {
ret_data = JSON.parse(response)
path = ret_data['path']
filename = ret_data['filename']
console.log('path : '+path+"\nfilename : "+filename)
console.log('create form...')
var form = $('<form method="POST" action="/index.php/input/download_pkg">');
form.append($('<input type="hidden" name="path" value="' + path + '">'));
form.append($('<input type="hidden" name="filename" value="' + filename + '">'));
$('body').append(form)
form.submit();
$("input[name='export']").prop('disabled', false);
$("input[name='export']").val('导出');
},
beforeSend: function () {
console.log("input[name='export'] disabled set true")
$("input[name='export']").val('正在导出...');
$("input[name='export']").prop('disabled', true);
}
});
}

在ajax post处理文件下载的更多相关文章

  1. Ajax 生成流文件下载 以及复选框的实现

    JQuery的ajax函数的返回类型只有xml.text.json.html等类型,没有“流”类型,所以我们要实现ajax下载,不能够使用相应的ajax函数进行文件下载.但可以用js生成一个form, ...

  2. 由于想要实现下载的文件可以进行选择,而不是通过<a>标签写死下载文件的参数,所以一直想要使用JFinal结合ajax实现文件下载,但是ajax实现的文件下载并不能触发浏览器的下载文件弹出框,这里通过模拟表单提交实现同样的效果。

    由于想要实现下载的文件可以进行选择,而不是通过<a>标签写死下载文件的参数,所以一直想要使用JFinal结合ajax实现文件下载(这样的话ajax可以传递不同的参数),但是ajax实现的文 ...

  3. H5+Ajax+WebApi实现文件下载(进度条,多文件)

    前言 踩过的坑 1.WebAPI跨域 2.Jquery ajax低版本不支持XHR 2功能 3.Jquery ajax不支持Deferred的process事件 4.IE下文件名乱码问题 功能实现 & ...

  4. django+ajax用FileResponse文件下载到浏览器过程中遇到的问题

    问题: 公司的需求是从mongodb中查找数据并下载回本地,但是在将文件从mongodb通过django服务端,然后从django服务端向浏览器下载文件.但是在下载的时候出了些问题.由于是用的ajax ...

  5. Ajax 生成流文件下载(实现代码)

    // 绑定导出按钮    $("#btnExport").clickCheckLogin(function () { var form = $("<form> ...

  6. ajax文件下载

    今天想做一个csv导出,想做ajax下载 JQuery的ajax函数的返回类型只有xml.text.json.html等类型,没有“流”类型,所以要实现ajax下载,不能够使用相应的ajax函数进行文 ...

  7. ajax处理文件下载

    ajax中处理文件下载,可能大数会遇到我和一样的问题,什么问题呢?就是下载程序执行了,但是浏览器没有任何下载操作,这是为什么呢? 那是因为response原因,一般请求浏览器是会处理服务器输出的res ...

  8. web文件下载

    web页面实现文件下载的几种方法 今天碰到文件下载的一些问题,本着知其然也要知其所以然的精神,站在巨人的肩膀上深入学习和测试了一下,抛砖引玉,现在总结结论如下: 1)标准URL下载方式可以通过在web ...

  9. web页面实现文件下载的几种方法

    今天碰到文件下载的一些问题,本着知其然也要知其所以然的精神,站在巨人的肩膀上深入学习和测试了一下,抛砖引玉,现在总结结论如下: 1)标准URL下载方式可以通过在web页面中嵌入 url超级链接,标准的 ...

随机推荐

  1. [Python]网络爬虫(七):Python中的正则表达式教程

    转自:http://blog.csdn.net/pleasecallmewhy/article/details/8929576#t4 接下来准备用糗百做一个爬虫的小例子. 但是在这之前,先详细的整理一 ...

  2. sqlplus命令手冊

    show和set命令是两条用于维护SQLPlus系统变量的命令 : SQL> show all --查看全部系统变量值 SQL>show user --显示当前连接用户 SQL>sh ...

  3. 指定spring中bean启动的顺序

    参考链接: https://www.jb51.net/article/125846.htm 使用DependsOn Spring 中的 DependsOn 注解可以保证被依赖的bean先于当前bean ...

  4. tomcat7.0.27的bio,nio.apr高级运行模式(转)

    一 前言 tomcat的运行模式有3种.修改他们的运行模式.3种模式的运行是否成功,可以看他的启动控制台,或者启动日志.或者登录他们的默认页面http://localhost:8080/查看其中的服务 ...

  5. 雪球、牛股王这种股票类App 到底能否帮你赚到钱?

    核心观点 股民这个大群体,是需要区分对待的:其中包含一小部分有自己独立判断能力的投资者和一大群没有自己判断能力(尽管他们经常觉得自己有)的普通散户. 当前的互联网证券类App,确实很难保证帮股民赚到钱 ...

  6. springmvc最优化

    java代码 package com.tgb.web.controller.annotation; import javax.servlet.http.HttpServletRequest; impo ...

  7. 【转】ubuntu如何修改/添加/删除硬盘分区的挂载(点)?

    我(macroliu)的问题:安装ubuntu时,/home单独挂载在一个分区,此后我想调整分区大小,删除了/home对应的分区以及另外几个分区,导致开机时找不到挂载点.把硬盘空闲空间分好区后,想把1 ...

  8. BIND9源码分析之acl 的实现

    BIND配置中一大堆一大堆的acl,什么allow-query, allow-recursion, allow-update还有view的match-clients等等等等. acl中的主要存储的就是 ...

  9. Mac 通过活动监视器关闭卡死进程

    前言: 心好累,Lantern太不省事了 之前装过之后,就设定了开启自启动,搞得我上网都受影响(这玩意,qq没事,但是网易云之类的一些软件上网都不行了...就是这玩意搞的鬼) 没办法,点击关闭吧... ...

  10. ubuntu修改固定ip

    1.vi /etc/network/interfasces,添加红框内的内容: