Deixe-me primeiro falar sobre os problemas que encontramos hoje.
Um processo de exportação do Excel requer a transferência de uma grande quantidade de dados para segundo plano após pressionar o botão. A abordagem inicial é a seguinte:
Copie o código do código da seguinte forma:
var actionUrlSetData = "****Action!exportDatas.action"+ "?now=" + new Date().getTime();
window.location.href=actionUrl + "&" + dados;
Os dados acima são uma string muito longa.
Não há problema no Firefox e no Google Chrome, mas não pode ser exportado normalmente no IE9 (não tentei em outros IEs, deve ser igual).
A razão para esse problema é que vários navegadores têm limites de comprimento diferentes para análise de URL. O IE tem o menor deles, então algo deu errado.
Microsoft Internet Explorer (navegador)
O limite máximo para URLs no navegador IE é de 2.083 caracteres. Se esse número for excedido, o botão enviar não responderá.
Raposa de fogo (navegador)
O limite de comprimento de URL para o navegador Firefox é de 65.536 caracteres
Safári (navegador)
O limite máximo de comprimento do URL é de 80.000 caracteres.
Ópera (navegador)
O limite máximo de comprimento do URL é de 190.000 caracteres.
Google (cromo)
O comprimento máximo do URL é limitado a 8.182 caracteres
Observe também aqui que o servidor WEB também tem restrições quanto ao comprimento da URL! !
Portanto, não podemos usar o método Get, só podemos encontrar uma maneira de usar post para passar o valor, portanto, não tenho certeza se é apropriado ou não. .Em suma, a função pode ser realizada.
A ideia é usar post para transferir a string longa para o plano de fundo, salvá-la na sessão e então usar window.location.href no método post callback.
O código é o seguinte:
Copie o código do código da seguinte forma:
$.post(actionUrlSetData,mapList,function(){
var actionUrl = caminho + "/***action!exportDatas.action"+ "?now=" + new Date().getTime();
window.location.href=actionUrl + "&" + (dados);
});