Ajax实现文件下载

JQuery的ajax函数的返回类型只有xml、text、json、html等类型,没有“流”类型,所以我们要实现ajax下载,不能够使用相应的ajax函数进行文件下载。但可以用js生成一个form,用这个form提交参数,并返回“流”类型的数据。在实现过程中,页面也没有进行刷新。

1. 使用ajax,ajax的返回值类型是json,text,html,xml类型,或者可以说ajax的发送,接受都只能是string字符串,不能流类型,所以无法实现文件下载,强用会出现response冲突。如果非要使用ajax的话,只能通过返回值得到生成的文件相关url。然后在回调函数里通过创建一个iframe,并设置其src值为文件url,或者一个对文件生成流的处理url,这样操作来实现文件下载且页面无刷新。

2. 不使用ajax,通过dom动态操作或创建iframe,form的方式来实现,在下载文件的同时实现页面不刷新,其中iframe的src可以是文件地址url来直接下载文件,也可以是流处理url通过response流输出下载,form的是流处理url通过response流输出下载,dom动态操作的时候实现文件下载,且页面无刷新。要在下载的同时实现进度条的话,可以创建一个定时任务,每隔一定时间就向后台发送请求,通过公用的对象,比如session,来取得文件下载的处理进度。

var form=$("<form>");//定义一个form表单
form.attr("style","display:none");
form.attr("target","");
form.attr("method","post");
form.attr("action","exportData");
var input1=$("<input>");
input1.attr("type","hidden");
input1.attr("name","exportData");
input1.attr("value",(new Date()).getMilliseconds());
$("body").append(form);//将表单放置在web中
form.append(input1);

form.submit();//表单提交

时间: 2024-10-11 01:33:32

Ajax实现文件下载的相关文章

Jquery+asp.net实现Ajax方式文件下载实例代码

如果文件中,需要下载一个文件,一般用超级链接的方式即可. 但是如果是图片,浏览器会默认打开图片浏览,不是实现下载. 考虑可以使用jquery ajax提交form请求的方式. jquery download函数: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17  // Ajax 文件下载     jQuery.download = function (url, data, method) {         // 获取url和data         if (

基于jquery 的ajax 文件下载

ajax 文件下载,实际上就是模拟表单提交,代码如下: function download(url, data, method){ //url and data options required if( url && data ){ //data can be string of parameters or array/object data =typeof data =='string'? data : jQuery.param(data); //split params into fo

动态提交使用jQuery 完成ajax 文件下载

查了好多资料,发现还是不全,干脆自己整理吧,至少保证在我的做法正确的,以免误导读者,也是给自己做个记录吧! // Ajax 文件下载jQuery.download = function(url, data, method){    // 获得url和data     if( url && data ){          // data 是 string 或者 array/object         data = typeof data == 'string' ? data : jQue

以ajax请求方式进行文件下载操作失败的原因及解决方案

一.失败的原因 那是因为response原因,一般请求浏览器是会处理服务器输出的response,例如生成png.文件下载等,然而ajax请求只是个“字符型”的请求,即请求的内容是以文本类型存放的.文件的下载是以二进制形式进行的,虽然可以读取到返回的response,但只是读取而已,是无法执行的,说白点就是js无法调用到浏览器的下载处理机制和程序. 二.解决方案 1)可以使用jquery创建表单并提交实现文件下载: var form = $("<form>"); form.

js &nbsp; ajax &nbsp; 文件下载

JQuery的ajax函数的返回类型只有xml.text.json.html等类型,没有"流"类型,所以我们要实现ajax下载,不能够使用相应的ajax函数进行文件下载.但可以用js生成一个form,用这个form提交参数,并返回"流"类型的数据.在实现过程中,页面也没有进行刷新. var form=$("<form>");//定义一个form表单 form.attr("style","display:n

动态提交使用jQuery 完成ajax 文件下载----后端php

1.js代码 // Ajax 文件下载 //当不用传参时,可以将data去掉 jQuery.download = function(url, data, method){ // 获得url和data     if( url && data ){         // data 是 string 或者 array/object        data = typeof data == 'string' ? data : jQuery.param(data); // 把参数组装成 form的

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

JQuery的ajax函数的返回类型只有xml.text.json.html等类型,没有“流”类型,所以我们要实现ajax下载,不能够使用相应的ajax函数进行文件下载.但可以用js生成一个form,用这个form提交参数,并返回“流”类型的数据.在实现过程中,页面也没有进行刷新. <th><input type="checkbox" name="title" id="checkbox_all"/></th>

ASP.Net Web ajax请求ashx服务实现文件下载

具体功能为,在文件数据列表中选择一行,点击表格上方的下载按钮,下载文件.由于表格中不包含文件路径,只能取到在数据库表中的ID,所以具体实现就是这样:首先点击一行,获取点击的一行数据的ID,用Ajax传值到Ashx服务文件,在Ashx中根据ID取到文件路径,转换为服务器虚拟路径后返回到Web页面.在Web页面中用Ajax进行下载. 一开始尝试过直接在Ashx服务处理中response.writeFile(),结果不能下载,原因可能是因为Ajax请求,而返回的时候直接返回到了Ajax的回调函数中.于

Ajax方式实现文件下载失败

背景:实现文件下载导出 问题描述 前端发送ajax[get/post]请求,后端生成excel文件,最后用response输出文件流,没有报错也没有文件下载提示. 遇到过这个问题的还是不少,问题出在ajax本身,解决方法和原因也都找到. 原因:文件的下载是以二进制形式进行的,ajax无法解析后台返回的文件流,所以无法处理二进制流response输出来下载文件 ajax请求只是个“字符型”的请求,即请求的内容是以文本类型存放的.文件的下载是以二进制形式进行的,ajax没法解析后台返回的文件流,所以