형제 JavaWeb 튜토리얼 AJAX 자주 묻는 질문의 IT 밴드

1 중국 쓰레기 문제

● POST 왜곡 제출

왜곡 이유 : 모든 아약스 브라우저 요청 매개 변수가 UTF-8, 서버가 너무 왜곡, 디코딩 기본 ISO-8859-1을 사용하여 인코딩됩니다.

해결 방법 : 서버가 코딩 매개 변수 구문 분석하기 전에 요청을받습니다.

request.setCharacterEncoding ( "UTF-8");

● 왜곡 제출 GET

왜곡 이유 : 요청 IE를 송신하는 경우, 왜곡을 디코딩하는 것은 발생하는 경우 서버 ISO-8859이 사용될 때 다른 브라우저에서 기본적으로 UTF-8을 사용하지만, 기본적으로 요청 파라미터를 인코딩하기 위해 사용 GBK 문자 세트. .

해결 방법 : 브라우저 요청을 전송하기 전에에 encodeURI를 사용하여 첫 번째 URL () 코딩. 에 encodeURI 중국에서 요청 UTF-8을 사용하여 인코딩 다룰 것이다.

'XXX에 이름 = 장'var에 URI =;

xhr.open는 (사실 encodedURI (URI)를 '수');

트랜스 코딩 서버 측 :

문자열 이름 = request.getParameter ( "이름");

이름 = 새로운 문자열 (name.getBytes ( "ISO-8859-1"), "UTF-8");

2 캐시 문제

다음과 같이 다른 브라우저는 같은 주소에 대한 처리 방식을 요청 :

크롬 재전송 요청

파이어 폭스 재전송 요청

IE는 요청을 보내지 않습니다

GET 요청을 보낼 때 주소를 액세스 여부를 브라우저에서 제공 IE 아약스 객체는, 먼저, 확인합니다 주소에 액세스 할 경우, 브라우저는 요청을 전송하지 않습니다,하지만 데이터의 내용은 이전에 브라우저 캐시를 촬영.

브라우저 캐싱 솔루션 :

요청의 어드레스는 시스템 시간이나, 예를 들면 난수 후에 첨가된다 :

xhr.open (+ 새로운 날짜 () 'load.do?r='을 '얻을'다음 getTime ()를 사실.);

또는

xhr.open ( '수' 'load.do?r='+ 인 Math.random ());

추천

출처blog.51cto.com/14311187/2405092