在做ajax调用后台实现文件下载时,出现了后台返回前端正确数据,但前台就是不提示下载框,且没有下载文件

$.ajax({
    "url" : urlStr + 'exportFile',
    "method" : "POST",
    "data" : {
        "list_str" : json_str
    },
    "cache" : false,
}).success(function (data) {
    if (data.ecode && data.ecode == '-1000') {
        showError(data.emessage);
        return;
    } else {
        showInfo("导出采购需求成功");
    }
}).fail(function (data) {
    showError(data.emessage);
    return;
});

用上面方法调用后台就会出现上述问题,修改为下面方法:

$.dynamicSubmit = function (url, datas) {
    var form = $('#dynamicForm');
    if (form.length <= 0) {
        form = $("<form>");
        form.attr('id', 'dynamicForm');
        form.attr('style', 'display:none');
        form.attr('target', '');
        form.attr('method', 'post');
        $('body').append(form);
    }
    form = $('#dynamicForm');
    form.attr('action', url);
    form.empty();
    if (datas && typeof(datas) == 'object') {
        for (var item in datas) {
            var $_input = $('<input>');
            $_input.attr('type', 'hidden');
            $_input.attr('name', item);
            $_input.val(datas[item]);
            $_input.appendTo(form);
        }
    }
    form.submit();
};
$.dynamicSubmit(urlStr + 'exportFile', {
    "list_str" : json_str
});


上述方法是利用JQuery动态构建一个form来post,$.dynamicSubmit()方法第一个参数是请求的地址,第二个参数为传后台的json数据


原文链接:https://blog.csdn.net/qq_33390789/article/details/54907915

欢迎留言