JQuery AJAX 중국어 난 장 판 솔 루 션 제출

현상 은 다음 과 같다.
1)Firefox 에서 처리 페이지 의 인 코딩 은 gb 2312 이 고 제출 데 이 터 는 문제 가 없 으 며 중국 어 는 정확하게 해석 할 수 있 습 니 다.
2)IE8 에서 처리 페이지 의 인 코딩 은 gb 2312 이 고 중국어 데 이 터 를 제출 하 는 데 오류 가 발생 합 니 다.
$.post 든$.ajax 든$.ajax Submit(Form 플러그 인 에서 온 것)이 든 이전 UTF-8 인 코딩 사이트 에 서 는 아무런 문제 가 없 었 습 니 다.데 이 터 를 제출 한 웹 페이지 의 인 코딩 형식 때 문인 것 같 습 니 다.어쨌든 브 라 우 저 간 에 차이 가 있 으 니 HTTP 패키지 로 볼 때 문제 가 있 는 것 같 습 니 다.
Fiddle 을 열 고 각각 Firefox 와 IE 로 AJAX 제출(사용자 로그 인 예)을 하고 그들의 HTTP 헤드 를 검사 한 결과
1)두 브 라 우 저가 제출 한 Form 데 이 터 는 모두 UTF-8 인 코딩 을 한 것 으로 다음 그림 과 같다.

분석:JQuery 의 AJAX 제출 은 제출 할 데 이 터 를 인 코딩 하고 encodeURIComponent 를 사용 하여 js 에서 데 이 터 를 처리 합 니 다.따라서 Firefox 나 IE 를 막론하고 제출 한 데 이 터 는 모두 일치 하 며 UTF-8 인 코딩 후의 데이터 입 니 다.
2)Header 를 살 펴 보면 Entity 의 Content-Type 에 차이 가 있 음 을 알 수 있다.
Firefox 에서 Content-type 은 utf-8 로 문자 집합 을 지정 합 니 다.

IE8 에 서 는 문자 집합 이 지정 되 어 있 지 않 습 니 다.

분석:기본적으로 AJAX 의 비동기 적 으로 제출 한 문자 인 코딩 은 웹 페이지 자체 와 일치 해 야 합 니 다.즉,서버 측 이 표 시 된 charset 지정 을 발견 하지 못 한 상태 에서 gb 2312 를 사용 하여 데 이 터 를 디 코딩 해 야 합 니 다(그러나 데 이 터 는 제출 전에 UTF-8 에 의 해 디 코딩 되 었 습 니 다).이것 이 바로 IE 에서 어 지 러 운 코드 가 발생 하 는 원인 입 니 다.Firefox 에서...브 라 우 저 는 AJAX 데 이 터 를 제출 할 때 charset 의 디 스 플레이 지정 을 추가 하여 서버 측 에서 UTF-8 로 데 이 터 를 디 코딩 합 니 다(올 바른 디 코딩).
추정:이 중국어 코드 문 제 를 해결 하려 면 지정 한 charset 를 AJAX 비동기 로 제출 해 야 합 니 다!
바로 JQuery 의 AJAX 도구 함수 에 대한 설명 을 찾 아 보 니 options 에 지정 한 content-type 의 인자 가 있 습 니 다.제 AJAX 코드 에
 
jQuery(form).ajaxSubmit({
url: "ajax.aspx?a=memberlogin",
type: "post",
dataType: "json",
contentType: "application/x-www-form-urlencoded; charset=utf-8",
success: showLoginResponse
});
테스트,OK!!

좋은 웹페이지 즐겨찾기