まず、今日私たちが遭遇した問題について話したいと思います。
Excel をエクスポートするプロセスでは、ボタンを押した後に大量のデータをバックグラウンドに転送する必要があります。最初のアプローチは次のとおりです。
次のようにコードをコピーします。
var actionUrlSetData = "****Action!exportDatas.action"+ "?now= + new Date().getTime();
window.location.href= actionUrl + "&" + データ;
上記のデータは非常に長い文字列です。
FirefoxやGoogle Chromeでは問題ないのですが、IE9では正常にエクスポートできません(他のIEでは試していないので同じはずです)。
この問題の原因は、ブラウザごとに URL 解析の長さ制限が異なるため、IE が最も小さいために問題が発生したためです。
Microsoft Internet Explorer(ブラウザ)
IE ブラウザの URL の最大制限は 2083 文字です。この数を超えると、送信ボタンは応答しなくなります。
Firefox(ブラウザ)
Firefox ブラウザの URL の長さ制限は 65,536 文字です
サファリ(ブラウザ)
URL の最大長制限は 80,000 文字です。
Opera (ブラウザ)
URL の最大長制限は 190,000 文字です。
Google(クローム)
URL の最大長は 8182 文字に制限されています
また、WEB サーバーには URL の長さにも制限があることにも注意してください。 !
したがって、Get メソッドを使用することはできず、post を使用して値を渡す方法しかありません。適切かどうかはわかりません。専門家にアドバイスを求めます。 . つまり、機能が実現できます。
このアイデアは、post を使用して長い文字列をバックグラウンドに転送し、セッションに保存してから、post コールバック メソッドで window.location.href を使用することです。
コードは次のとおりです。
次のようにコードをコピーします。
$.post(actionUrlSetData,mapList,function(){
var actionUrl = path + "/***action!exportDatas.action"+ "?now=" + new Date().getTime();
window.location.href= actionUrl + "&" + (データ);
});