1. 程式人生 > >ajax呼叫後臺實現檔案下載,不彈出下載提示框,無法下載

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資料

這方法是百度時一位大神回答的,點選開啟連結