먼저 오늘 우리가 직면한 문제에 대해 이야기하겠습니다.
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 브라우저의 URL 길이 제한은 65,536자입니다.
사파리(브라우저)
최대 URL 길이 제한은 80,000자입니다.
오페라(브라우저)
최대 URL 길이 제한은 190,000자입니다.
구글(크롬)
URL의 최대 길이는 8,182자로 제한됩니다.
또한 웹 서버에도 URL 길이에 제한이 있다는 점을 참고하세요! !
따라서 Get 메소드를 사용할 수 없으며 post를 사용하여 값을 전달하는 방법만 찾을 수 있으므로 이것이 적절한지 여부는 전문가에게 문의하고 싶습니다. 즉, 기능을 구현할 수 있습니다.
post를 사용하여 긴 문자열을 백그라운드로 전송하고 세션에 저장한 다음 post 콜백 메서드에서 window.location.href를 사용하는 것이 아이디어입니다.
코드는 다음과 같습니다:
다음과 같이 코드 코드를 복사합니다.
$.post(actionUrlSetData,mapList,함수(){
var actionUrl = path + "/***action!exportDatas.action"+ "?now=" + new Date().getTime();
window.location.href= actionUrl + "&" + (데이터);
});