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