>웹 프론트엔드 >JS 튜토리얼 >window.location.href의 URL에 있는 데이터의 양이 너무 많을 때 해결 방법_javascript 기술

window.location.href의 URL에 있는 데이터의 양이 너무 많을 때 해결 방법_javascript 기술

WBOY
WBOY원래의
2016-05-16 17:07:421444검색

오늘 겪은 문제에 대해 이야기해 보겠습니다

Excel을 내보내는 과정에서는 버튼을 누른 후 많은 양의 데이터를 백그라운드로 전송해야 합니다.

코드 복사 코드는 다음과 같습니다.

var actionUrlSetData = "****Action !exportDatas.action" "?now=" new Date().getTime();
window.location.href= actionUrl "&" data;

위 데이터는 매우 긴 문자열입니다.

Firefox, Google Chrome에서는 문제가 없으나 IE9에서는 정상적으로 내보내기가 되지 않습니다.(다른 IE에서는 시도해보지 않았는데 마찬가지일 겁니다.)

이 문제가 발생하는 이유는 브라우저마다 URL 구문 분석 길이 제한이 다르기 때문입니다. IE는 가장 작은 것이므로 문제가 발생했습니다


Microsoft Internet Explorer(브라우저)
IE 브라우저의 최대 URL 제한은 2083자입니다. 이 숫자를 초과하면 제출 버튼이 응답하지 않습니다.

Firefox(브라우저)
Firefox 브라우저의 경우 URL 길이 제한은 65,536자입니다

사파리(브라우저)

최대 URL 길이 제한은 80,000자입니다.

오페라(브라우저)

최대 URL 길이는 190,000자로 제한됩니다.

Google(크롬)

URL의 최대 길이는 8182자로 제한됩니다

여기서 웹 서버에도 URL 길이에 제한이 있다는 점에 유의하세요! !

따라서 더 이상 Get 메서드를 사용할 수 없습니다. post를 사용하여 값을 전달하는 방법만 찾을 수 있으므로 다음과 같은 해결 방법이 적합한지 조언을 부탁드립니다. 즉, 기능을 실현할 수 있습니다

post를 사용하여 긴 문자열을 배경으로 전송하고 세션에 저장한 다음 post의 콜백 메서드에서 window.location.href

를 사용하는 아이디어입니다.

코드는 다음과 같습니다.

코드 복사 코드는 다음과 같습니다.

$.post(actionUrlSetData,mapList,function (){
var actionUrl = 경로 "/***action!exportDatas.action" "?now=" new Date().getTime();
                                      var actionUrl = 경로 "/***action!exportDatas .action" "?now=" new Date().getTime();
                                                          var actionUrl = path "                                                                        " 🎜> });
성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.