Ajax请求ashx一般处理程序实现文件下载
具体功能为,在文件数据列表中选择一行,点击表格上方的下载按钮,下载文件。由于表格中不包含文件路径,只能取到在数据库表中的ID,所以具体实现就是这样:首先点击一行,获取点击的一行数据的ID,用Ajax传值到Ashx服务文件,在Ashx中根据ID取到文件路径,转换为服务器虚拟路径后返回到Web页面。在Web页面中用Ajax进行下载。
一开始尝试过直接在Ashx服务处理中response.writeFile(),结果不能下载,原因可能是因为Ajax请求,而返回的时候直接返回到了Ajax的回调函数中。于是只好取到文件的路径后直接返回回调函数,然后在回调函数路面下载。
在网上找到好多种下载方式,用jQuery来处理文件路径最多的建议就是window.href=url,可能很多需求并不是下载文件,而是重定向吧。如果下载文件这样写也是可以的,只不过用户体验不好,点击下载后就跳转页面了,下载完还要后退或者怎么样。所以我就没有用这种方式。
下面还是讲讲我用的方法吧,比较巧妙。就是先在页面中添加一个隐藏的a标签,让其隐藏,在获取到文件路径的时候赋值给a的href,然后触发a标签的click事件就行了。
<a id="dp" href="" style="display: none;"><span id="fp"></span></a>
这里a标签如果直接触发的话没有用,所以在其中加了一个span标签,触发的span标签的click事件就可以了。
function Download() {
//在选择某行的时候给rowid赋值,这里取值即可
var id = $("#rowid").val();
$.ajax({
type: "POST",
url: "Download.ashx",
dataType: "json",
data: {
action: "DownLoad",
id: id
},
success: function (data) {
if (data != null || data != "") {
//获取返回的文件路径
var path = data[]["path"].toString();
//给a标签赋值
$("#dp").attr("href", path);
//这里的fp是a标签中的span标签的ID
$("#fp").click();
}
else {
alert("文件不存在");
}
}
});
}
这的确是一个比较实用的小诀窍,这下再也不用担心Ajax文件下载的问题啦。
Ajax请求ashx一般处理程序实现文件下载的更多相关文章
- Ajax请求ashx返回各类数据的常见处理方式
.请求text数据,在success事件中手动解析 前台: $.ajax({ type: "post", url: "checkFile.ashx", data ...
- ajax请求ashx跨域问题解决办法
ajax请求ashx跨域问题解决办法 https://blog.csdn.net/windowsliusheng/article/details/51583566 翻译windowsliusheng ...
- jQuery Ajax请求 .net 一般处理程序
初学ajax 一个简单的功能,调试了2个小时,代码如下虽然成功了 但是有错误 <!DOCTYPE html> <html> <head> <meta http ...
- Ajax请求ashx 返回 json 格式数据常见问题
问题:ashx 返回的字符串json格式,在前台ajax自动解析失败. 问题分析:经过排查,发现是拼接json时出现” ’ “单引号,jquery无法解析,用” “ “双引号才可以.例如: stri ...
- Ajax请求 一般处理程序参数传递的几种方式
//第一种Ajax请求 $.ajax({ type:"GET", //请求类型,有get,post等类型,和表单提交是一样的 url:"Result.aspx" ...
- jquery.ajax请求aspx和ashx的异同 Jquery Ajax调用aspx页面方法
1.jquery.ajax请求aspx 请求aspx的静态方法要注意一下问题: (1)aspx的后台方法必须静态,而且添加webmethod特性 (2)在ajax方法中contentType必须是“a ...
- AJAX通过HTML请求C#一般处理程序
AJAX通过HTML请求C#一般处理程序 <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"&g ...
- Ajax与ashx异步请求的简单案例
Ajax与ashx异步请求的简单案例: 前台页面(aspx): <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//E ...
- .net Ajax与后台一般处理程序(ashx) 交互
本文主要实现无动态刷新查询后台数据功能,主要用到ajax+ashx+sqlserver进行交互. 首先需要引用Jquery: <script language="javascript& ...
随机推荐
- 【ImageMagick】Unix Windows 源码安装
[ Unix 源码安装 | Windows 源码安装 ] 首先检查一下电脑里已经安装的ImageMagick版本,输入: convert -version 除非你想要把对另外的图像格式的支持或升级 ...
- Shell脚本语言与编译型语言的差异
大体上,可以将程序设计语言可以分为两类:编译型语言和解释型语言. 编译型语言 很多传统的程序设计语言,例如Fortran.Ada.Pascal.C.C++和Java,都是编译型语言.这类语言需要预先将 ...
- Shell break和continue命令
在循环过程中,有时候需要在未达到循环结束条件时强制跳出循环,像大多数编程语言一样,Shell也使用 break 和 continue 来跳出循环. break命令 break命令允许跳出所有循环(终止 ...
- express4.x 路由中间件
路由中间件必须通过app挂载到对应的路由上,如: var express = require('express'); var router = express.Router(); var app = ...
- textarea在光标位置插入文字
最近开发类似计算器界面,需要在textarea中编辑公式,涉及到 在光标位置插入 字符. 效果如下: + - * / 添加文字 // html代码如下: <!doctype html> & ...
- ASP.NET MVC- VIEW Creating Custom HTML Helpers Part 2
The goal of this tutorial is to demonstrate how you can create custom HTML Helpers that you can ...
- (3/18)重学Standford_iOS7开发_Objective-C_课程笔记
第三课: 本节课主要是游戏实现的demo,因此我将把课程中简单的几个编程技巧提取出来,重点介绍如何自己实现作业中的要求. 纸牌游戏实现: ①游戏的进行是模型的一部分(理解什么是模型:Model = W ...
- 推荐一个可以直接在Visual Studio中看到complexity的插件CodeMaid
博客搬到了fresky.github.io - Dawei XU,请各位看官挪步.最新的一篇是:推荐一个可以直接在Visual Studio中看到complexity的插件CodeMaid.
- linux系统垃圾清理
早上刚来,服务器出502错误了.我登上linux服务器,发现敲一个命令都提示没空间了, 用 df -h 查看了下 发现系统盘目录空间大小占用达到90%多,我觉得有些诧异, 难道是产生系统垃圾 然后用 ...
- canvas绘制简单小铅笔
对应HTML <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <ti ...