IE 브 라 우 저 와 FF 브 라 우 저 는 Ajax 가 전달 하 는 매개 변수 값 이 중국어 일 때의 차이 점 인 스 턴 스 분석

2799 단어 Ajax중국어.
이 사례 는 IE 브 라 우 저 와 FF 브 라 우 저 가 Ajax 전달 매개 변수 값 이 중국어 일 때의 차 이 를 보 여 줍 니 다.여러분 께 참고 하도록 공유 하 겠 습 니 다.구체 적 으로 는 다음 과 같 습 니 다.
앞에서 을 소 개 했 는데 여기 서 ajax 가 중국어 파 라 메 터 를 전달 하 는 과정 에서 서로 다른 브 라 우 저 에 대한 어 지 러 운 처리 방법 을 분석 해 보 았 습 니 다.
Ajax 가 매개 변 수 를 중국어 로 전달 할 때 오류 가 발생 했 습 니 다.제 가 만난 상황 은:
1.내 데이터베이스 연결 인 코딩 은 GB 2312,latin 1swedish_ci
2.php 파일 인 코딩 형식 은 UTF-8 이 고 브 라 우 저 디 스 플레이 인 코딩 은 UTF-8 입 니 다.
3.제 페이지 표시 방식 은 두 가지 입 니 다.
1)페이지 를 불 러 올 때 자동 으로 불 러 옵 니 다.1 초 마다 새로 고침 합 니 다.
2)하나의 유닛 이름 을 클릭 하면 해당 유닛 에 해당 하 는 멤버 카드 정 보 를 얻 을 수 있 습 니 다.
4.첫 번 째 상황 에 대한 처리:
control.php 페이지 에서 session 획득:
데이터베이스 내용 읽 기:
line 53:
$grouparr[] = iconv("GB2312","UTF-8",$g[0]); //         UTF-8,             
line106:
$_SESSION['dispatchgroup'] = iconv("UTF-8","GB2312",$grouparr[0]);//          GB2312,    dispatchinfo.php            ,  GB2312    。
dispatchinfo.php: line 291

if($_SESSION['dispatchgroup']){
  $groupaddressinfo = function_listaddressesbygroup($_SESSION['dispatchgroup'],1,$value,0,$_SESSION['dispatchexten'],$_SESSION['dispatchgrouppage']);  
  //2013-5-17$groupaddressinfo = "listaddressesbygrouptype|0|LocalExt|1|12|1,,,801,  ,,|1,,,802,   ,,|1,,,803,  ,,|1,,,804,   ,,|,,,805,   ,,|,,,806,   ,,|,,,807,   ,,|,,,808,   ,,|,,,809,   ,,|,,,810,   ,,|5,  ,,811,10.1.6.189;  |6,,,812,user2;  |";
}

이런 상황 은 IE 와 FF 가 모두 정상적으로 표 시 될 수 있다.
5.두 번 째 상황 에 대해:
'유닛'이름 을 누 르 면 클릭 한 유닛 별 중국어 이름 을 얻 을 수 있 습 니 다.Ajax 를 통 해 dispatchinfo 2.phop 파일 에 전달 하여 처리 합 니 다.수정 하기 전에 js 가 이 벤트 를 클릭 한 후에 얻 은 중국어 이름 은 alert 가 모두 정상 값[형식 은 UTF-8]입 니 다.이때 데이터베이스 에 있 는 내용 은 GB 2312 입 니 다.이때 iconv 코드 를 거치 면 오류 가 발생 합 니 다.
첫 번 째 상황 에 대해 서 만,나 는 처리 할 때 인 코딩 을 바 꾸 는 방식 을 채택 하기 때문이다.
$groupname = iconv("GB2312","UTF-8",$groupname);
이 때 다시 인 코딩 하면 오류 가 발생 합 니 다.
해결 방법:
JS 의 비동기 제출 처리:

checkval(); 
var ajax = InitAjax();
var url = "dispatchinfo2.php?"+arges;
//2013-08-21 limx       
url = encodeURI(encodeURI(url));
ajax.open('GET',url,true);

dispatchinfo2.php

$groupname = urldecode($groupname);
$groupname = iconv("utf-8","GB2312",$groupname);

네 줄 코드 는 중국어 인 코딩 문 제 를 완벽 하 게 해결 합 니 다.
AJAX 가 데 이 터 를 보 내 는 것 은 모두 UTF-8 인 코딩 으로 보 내 는 것 이기 때문에 서버 쪽 에서 인 코딩 변환 을 해 야 합 니 다(여기 페이지 는 GB 2312 인 코딩 을 사 용 했 는데 UTF-8 을 사 용 했 으 면 이런 문 제 는 없 었 을 것 입 니 다).그래서 서버 쪽 에서 UTF-8 을 GB 2312 로 돌 렸 습 니 다.
본 논문 에서 말 한 것 이 여러분 의 ajax 프로 그래 밍 에 도움 이 되 기 를 바 랍 니 다.

좋은 웹페이지 즐겨찾기