JQuery 의 Ajax 에서 Post 방법 으로 중국 어 를 전달 하 는 데 오류 가 발생 하 는 해결 방법

본 논문 의 사례 는 JQuery 에서 Post 가 중국 어 를 전달 하 는 데 나타 난 해결 방법, 즉 난호 ajax 와 jquery. ajax 중국어 매개 변수 post 가 난호 처리 방법 을 전달 하 는 것 을 서술 하 였 다.모두 에 게 참고 하도록 공유 하 다.구체 적 인 분석 은 다음 과 같다.
문제 1:
오늘 프로젝트 를 할 때 Ajax 를 사용 해 야 합 니 다. 그 전에 제 가 GET 방식 으로 중국어 인 자 를 전달 할 때 백 엔 드 프로그램 에서 페이지 인 코딩 을 GB 2312 로 설정 하면 중국어 가 정상적으로 표 시 될 수 있 습 니 다. 그러나 이번 에는 폼 항목 이 많아 서 GET 방식 으로 전달 하기에 적합 하지 않 고 POST 방식 만 사용 할 수 있 습 니 다. 그러나 백 엔 드 프로그램 에서 인 코딩 을 GB 2312 로 설정 할 때 중국어 가 표시 되 는 어 지 러 움 을 발 견 했 습 니 다.한 차례 의 연구 문 제 를 거 쳐 서 야 최종 적 으로 해결 되 었 다.
해결 방법:
이 문 제 를 해결 하 는 방법 은 매우 간단 합 니 다. JS 에서 파 라 메 터 를 처리 할 때 escape () 함수 로 처리 하면 됩 니 다. 그리고 unescape () 로 디 코딩 할 필요 가 없습니다. 이 방법 은 POST 와 GET 방식 에 적합 합 니 다. 구체 적 인 Ajax 코드 는 여기 서 예 를 들 지 않 습 니 다. 여기 서 escape () 함수 로 파 라 메 터 를 처리 할 때의 코드 를 드 립 니 다.

   var htmer ="getcode="+escape(getcode)+"&Content="+escape(Content); 
 
 
보통 저 희 는 Ajax 를 처리 할 때 여기 서 매개 변수의 값 을 직접 가 져 옵 니 다. 중국어 매개 변수 가 어 지 럽 지 않도록 escape () 함수 로 매개 변 수 를 처리 하면 됩 니 다.
문제 2:
사이트 페이지 가 utf - 8 인 코딩 이 아 닐 때 ajax 가 제출 한 중국 어 는 어 지 러 워 집 니 다.
해결 방법 은 다음 과 같다.
jquery. js 의 contentType: application / x - www - form - urlencoded 를 찾 아 contentType: application / x - www - form - urlencoded 로 변경 합 니 다.charset = UTF - 8 이면 됩 니 다.
원인: charset 가 지정 되 지 않 았 을 때 jquery 는 ISO - 8859 - 1, ISO 8859 - 1 을 사용 하 는데 보통 Latin - 1 이 라 고 합 니 다.Latin - 1 은 모든 서양 유럽 언어 에 없어 서 는 안 될 추가 문 자 를 포함한다.jquery 의 ajax 는 국제 화 문 제 를 전혀 고려 하지 않 고 유럽 의 문자 집합 을 사 용 했 기 때문에 중국 어 를 전달 할 때 오류 가 발생 할 수 있 습 니 다.
나 는 오래전부터 프로 토 타 입 프레임 워 크 를 사용 해 왔 다.. net - GB 2312 또는 jsp 튜 토리 얼 - utf 8 에서 모두 사용 되 었 으 며 문자 인 코딩 문제 가 발생 한 적 이 없습니다.그래서 Prototype 과 JQuery 코드 를 모두 다운로드 하여 연구 원인 을 열 었 다.
다른 점 은 JQuery 의 기본 contentType: application / x - ww - form - urlencoded 입 니 다.
Prototype 은 contentType: application / x - www - form - urlencoded 입 니 다.charset=UTF-8
이것 이 JQuery 가 어 지 럽 히 고 있 는 이유 입 니 다. 문자 집합 이 지정 되 지 않 았 을 때 ISO - 8859 - 1 을 사용 합 니 다.
ISO 8859 - 1 은 보통 Latin - 1 이 라 고 합 니 다.Latin - 1 은 모든 서양 유럽 언어 에 없어 서 는 안 될 추가 문 자 를 포함한다.
JQuery 의 Ajax 는 국제 화 문 제 를 전혀 고려 하지 않 고 유럽 의 문자 집합 을 사 용 했 기 때문에 중국 어 를 전달 하 는 데 문제 가 생 겼 다.
우리 의 UTF - 8 은 이 문 제 를 해결 할 수 있다.
최종 적 으로 JQuery 의 코드 를 수정 해 야 하 며, contentType 은 utf - 8 문자 집합 을 사용 하면 GB 2312 중국어 전달 문 제 를 해결 할 수 있 습 니 다.
JQuery 코드 를 간단하게 수정 하고 charset = UTF - 8 을 더 하면 됩 니 다. 웹. config 나 페이지 에서 인 코딩 을 바 꿀 필요 도 없고 escapc (str) 로 서버 에서 디 코딩 할 필요 도 없습니다.영 어 는 어떻게 전달 하고 중국어 도 어떻게 전달 합 니까?
간단 한 코드 테스트 를 해 보 겠 습 니 다.
test. html 페이지 코드:

    
  



<br/> <script type="text/ " src="scripts/jquery-1.3.2.min.js"/> <br/> <script type="text/javascript"> <br> function DoAjax(){ <br> $.post("AjaxTest.aspx",{txt:$("#tbox1").val()}, <br> function(data){ <br> $("#AjaxResponse").text(data); <br> } <br> ); <br> } <br> </script> <br/> <br/> <p><a href="javascript:DoAjax();">AjaxTest</a><input name="tbox1" id="tbox1" type="text"/></p><br/> <div id="AjaxResponse"/><br/> <br/> </code></pre> <p>AjaxTest.aspx :</p> <pre><code> <br/> <script runat="server"> <br> string parms; <p></p> <p>void Page_Load(object sender , EventArgs e)<br> {<br> parms=Request["txt"];<br> if (String.IsNullOrEmpty(parms)){<br> Response.Write("Is Null");<br> }else{<br> Response.Write(parms);<br> }<br> }<br> </script> </code></pre> <p> , Ajax utf-8, utf-8。</p> <p> jQuery Ajax 。</p> <div class="clearfix"> <span id="art_bot" class="jbTestPos"/> </div> </div> </div> </div>

좋은 웹페이지 즐겨찾기