ajax呼叫後臺實現檔案下載,不彈出下載提示框,無法下載
阿新 • • 發佈:2019-01-23
在做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資料
這方法是百度時一位大神回答的,點選開啟連結