Permítanme hablar primero de los problemas que encontramos hoy.
Un proceso de exportación de Excel requiere transferir una gran cantidad de datos al fondo después de presionar el botón. El enfoque inicial es el siguiente:
Copie el código de código de la siguiente manera:
var actionUrlSetData = "****Acción!exportDatas.action"+ "?now=" + new Date().getTime();
ventana.ubicación.href= actionUrl + "&" + datos;
Los datos anteriores son una cadena muy larga.
No hay ningún problema en Firefox y Google Chrome, pero no se puede exportar normalmente en IE9 (no lo he probado en otros IE, debería ser lo mismo).
La razón de este problema es que varios navegadores tienen diferentes límites de longitud para el análisis de URL. IE tiene el más pequeño, por lo que algo salió mal.
Microsoft Internet Explorer (navegador)
El límite máximo de URL en el navegador IE es 2083 caracteres. Si se excede este número, el botón de enviar no responderá.
Firefox (navegador)
El límite de longitud de URL para el navegador Firefox es de 65.536 caracteres
Safari (navegador)
El límite máximo de longitud de URL es de 80.000 caracteres.
Ópera (navegador)
El límite máximo de longitud de la URL es de 190.000 caracteres.
Google (cromo)
La longitud máxima de la URL está limitada a 8182 caracteres.
¡También tenga en cuenta aquí que el servidor WEB también tiene restricciones en la longitud de la URL! !
Por lo tanto, no podemos usar el método Get. Solo podemos encontrar una manera de usar post para pasar el valor, por lo que tenemos la siguiente solución. No estoy seguro de si es apropiada o no. Me gustaría pedirle orientación a un experto. En resumen, la función se puede realizar.
La idea es usar post para transferir la cadena larga al fondo, guardarla en la sesión y luego usar window.location.href en el método de devolución de llamada posterior.
El código es el siguiente:
Copie el código de código de la siguiente manera:
$.post(actionUrlSetData,mapList,función(){
var actionUrl = ruta + "/***action!exportDatas.action"+ "?now=" + new Date().getTime();
ventana.ubicación.href= actionUrl + "&" + (datos);
});