当前页面,就是AJAX下载实例,用户体验比较好。以下说说实现思路,希望对您有所帮助!
想办法获取到下载的真实路径,拿本站为例,因为本站使用了大部分的ajax,所以,有些步骤可以略过,这里只讲方法!
第一步:先请求/e/DownSys/DownSoft/?classid=1&id=1&pathid=0 这个地址,得到下载页面。
然后在下载页面中,有“点击下载”按钮字样。
第二步:提取“点击下载”的a链接的href值,这个值为真实的下载地址。
第三步:获取到真实的下载地址之后,那么就好办了。接下来就要想办法请求这个真实的下载地址,在页面中增加一个<iframe></iframe>然后将<iframe>的src属性,设置为 真实的下载地址,然后,将<iframe>隐藏,这样,就OK了,很简单的就是现实了AJAX下载。
以下是本站的代码片段带注释,应用到你的项目中可能还需要修改
<script> $(function(){ $(\'#downpath a\').click(function(){ //点击下载链接 var url = $(this).attr(\'href\'); //提取下载地址(也就是a标签的href值) $.get(url,{},function(data){ //ajax get方式请求这个下载地址,会返回一个页面 var data = data.toString(); //将页面转化为字符串 if(data.indexOf(\'您还没登录\') != -1){ //检索返回来的字符串中是否包含"您还没登录"字样,如果没有检索到,那么就弹出登录框 /*登陆弹框 开始*/ $.layer({ type : 2, title : \'Task3.com - 通行证\', iframe : {src : \'/alert_login.html\'}, area : [\'500px\' , \'250px\'], offset : [\'100px\',\'\'] }); /*登陆弹框 结束*/ }else if(data.indexOf(\'无法下载此软件\') != -1){ //检索返回来的字符串中是否包含"无法下载此软件"字样,如果没有检索到,那么就弹出提示框 /*提示框 开始*/ $.layer({ area : [\'auto\',\'auto\'], title : false, time : 3, dialog : {msg:data} }); /*提示框 结束*/ }else if(data.indexOf(\'点击下载\') != -1){ //检索返回来的字符串中是否包含"点击下载"字样,如果没有检索到,那么就弹出提示框 var downurl = $(\'a\',data).attr(\'href\'); //提取真实的下载地址 downurl = \'[!-------news.url--]e/\'+downurl.replace(\'../../\',\'\'); //处理真实的下载地址 $(\'#ajax_down\').html(\'<iframe src="\'+downurl+\'" style="display:none"></iframe>\'); //向当前页面写入<iframe> } }) return false; //阻止页面跳转 }) }) </script>
然后将<div id="ajax_down"></div>html代码写在页面任意地方。