AJAX请求文件下载

文章目录 (?) [+]

    文章部分内容转载于 http://www.cnblogs.com/sydeveloper/archive/2013/05/14/3078295.html


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


    方法 1:

    // Ajax 文件下载
    jQuery.download = function(url, data, method) {
        // 获取 url 和 data
        if (url && data) {
            // data 是 string 或者 array/object
            data = typeof data == "string" ? data : jQuery.param(data);
            // 把参数组装成 form 的 input
            var inputs = "";
            jQuery.each(data.split("&"), function() {
                var pair = this.split("=");
                inputs += '<input type="hidden" name="' + pair[0] + '" value="' + pair[1] + '" />';
            });
    	// request发送请求
            jQuery('<form action="' + url + '" method="' + (method || 'post') + '">' + inputs + '</form>').appendTo("body").submit().remove();
        };
    };
    
    $.download('https://lanseyujie.com/download.php', "DwnID=1234&DwnKey=a1b2c3d4e5f7", "post");


    方法 2:

    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", "ID");
    input1.attr("value", "1234");
    
    $("body").append(form); //将表单放置在web中
    form.append(input1);
    
    form.submit(); //表单提交


    本文标题:AJAX请求文件下载
    本文链接:https://lanseyujie.com/post/ajax-request-download-file.html
    版权声明:本文使用「署名 4.0 国际」创作共享协议,转载或使用请遵守署名协议。
    点赞 0 分享 0
    本文已有2条留言:
    • 头像
      axlrose  Windows 7 x64Windows 7 x64 Google Chrome 62.0.3202.75Google Chrome 62.0.3202.75
      发表于 2017-10-30 10:03:11 来自 湖北省武汉市 的朋友 回复该评论
    • 博主很秀啊
    • 头像
      119.39.*.* 访客  Windows 10 x64Windows 10 x64 QQBrowser 9.5.11096.400QQBrowser 9.5.11096.400
      发表于 2017-09-01 11:08:09 来自 湖南省株洲市 的朋友 回复该评论
    • 。。。。。你这很厉害