Lassen Sie mich zunächst über die Probleme sprechen, auf die wir heute gestoßen sind.
Beim Excel-Export müssen nach dem Drücken der Schaltfläche große Datenmengen in den Hintergrund übertragen werden. Der anfängliche Ansatz ist wie folgt:
Kopieren Sie den Codecode wie folgt:
var actionUrlSetData = "****Action!exportDatas.action"+ "?now=" + new Date().getTime();
window.location.href= actionUrl + „&“ + data;
Die obigen Daten sind eine sehr lange Zeichenfolge.
In Firefox und Google Chrome gibt es kein Problem, aber in IE9 kann es nicht normal exportiert werden (ich habe es nicht in anderen IEs ausprobiert, es sollte dasselbe sein).
Der Grund für dieses Problem liegt darin, dass verschiedene Browser unterschiedliche Längenbeschränkungen für die URL-Analyse haben. IE hat die kleinste, also ist ein Fehler aufgetreten.
Microsoft Internet Explorer (Browser)
Die maximale URL-Grenze im IE-Browser beträgt 2083 Zeichen. Wenn diese Zahl überschritten wird, reagiert die Schaltfläche „Senden“ nicht.
Firefox (Browser)
Die URL-Längenbeschränkung für den Firefox-Browser beträgt 65.536 Zeichen
Safari (Browser)
Die maximale URL-Länge beträgt 80.000 Zeichen.
Opera (Browser)
Die maximale URL-Länge beträgt 190.000 Zeichen.
Google(Chrome)
Die maximale Länge der URL ist auf 8182 Zeichen begrenzt
Beachten Sie auch hier, dass der WEB-Server auch Einschränkungen hinsichtlich der Länge der URL hat! !
Daher können wir die Get-Methode nicht verwenden, um den Wert zu übergeben. Ich bin mir nicht sicher, ob sie geeignet ist oder nicht Kurz gesagt, die Funktion kann realisiert werden.
Die Idee besteht darin, Post zu verwenden, um die lange Zeichenfolge in den Hintergrund zu übertragen, sie in der Sitzung zu speichern und dann window.location.href in der Post-Rückrufmethode zu verwenden.
Der Code lautet wie folgt:
Kopieren Sie den Codecode wie folgt:
$.post(actionUrlSetData,mapList,function(){
var actionUrl = path + "/***action!exportDatas.action"+ "?now=" + new Date().getTime();
window.location.href= actionUrl + „&“ + (Daten);
});