使用JavaScript调用aspx后台代码
方法1:js同步调用
触发:
onclick="javascript:share('<%# Eval("id_File") %>')"
页面函数:
function share(id_File) { var a = '<%= ShareDoc("' + id_File + '") %>'; alert(a); }
后台cs函数:
public string ShareDoc(string id_File) { return "后台函数[" + id_File + "]"; }
方法2:JQuery ajax异步调用
触发:
onclick="javascript:download('<%# Eval("FileNewName") %>','<%# Eval("FileExtName") %>')"
前台函数:
function download(p1, p2) { $.ajax({ url: 'MyDocList.aspx/DownloadDoc', contentType: 'application/json; charset=utf-8', datatype: 'json', type: 'POST', data: '{FileNewName:"' + p1 + '",FileExtName:"' + p2 + '"}', //参数 success: function(result) {//成功后执行的方法 alert(result.d); // 后台返回值 }, error: function(result) {//失败执行的方法 alert("error:" + result.responseText); } }); }
后台cs函数:
[WebMethod] public static string DownloadDoc(string FileNewName, string FileExtName) { string filePath = Server.MapPath(string.Format("~/FileUpload/{0}.{1}", FileNewName, FileExtName)); if (System.IO.File.Exists(filePath)) { FileInfo file = new FileInfo(filePath); Response.ContentEncoding = System.Text.Encoding.GetEncoding("UTF-8"); //解决中文乱码 Response.AddHeader("Content-Disposition", "attachment; filename=" + Server.UrlEncode(file.Name)); //解决中文文件名乱码 Response.AddHeader("Content-length", file.Length.ToString()); Response.ContentType = "appliction/octet-stream"; Response.WriteFile(file.FullName); Response.End(); } return filePath; }
注意:下载功能是错误的。但是函数可以这样调用。