• A+

ajax调用后台实现文件下载,不弹出下载提示框,无法下载

在做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数据

这方法是百度时一位大神回答的,点击打开链接

 

所属分类:问答

全部评论: 0

    我有话说:
    ×