찾다
웹 프론트엔드프런트엔드 Q&Ajquery ajax 매개변수가 잘못된 문자를 전달하는 경우 수행할 작업

인터넷 기술이 발전함에 따라 점점 더 많은 웹사이트가 Ajax 기술을 사용하여 웹페이지에서 동적 상호 작용을 구현하고 있습니다. 가장 인기 있는 JavaScript 라이브러리인 jQuery는 많은 웹사이트에서 가장 먼저 선택되는 라이브러리이기도 합니다. 그러나 jQuery의 Ajax를 사용하여 POST 요청을 보낼 때 많은 개발자는 중국어 매개변수가 왜곡되는 매우 당황스러운 문제에 직면하게 됩니다. 이 기사에서는 이 문제의 원인과 해결 방법에 대해 설명합니다.

문제 원인

POST 요청을 보낼 때 jQuery의 Ajax 메서드는 기본적으로 "application/x-www-form-urlencoded" 형식으로 매개 변수를 직렬화하여 백엔드로 보냅니다. 이 형식은 비교적 간단하며 브라우저 간 호환성이 가장 좋습니다. 그러나 매개변수에 중국어 문자가 포함되어 있으면 문자가 깨질 수 있습니다. 이는 이 형식이 중국어를 지원하지 않기 때문이며, 중국어는 올바른 전송을 위해 URL 인코딩 및 이스케이프가 필요하기 때문입니다.

이 문제를 해결하기 위해 jQuery에서 제공하는 다른 데이터 형식인 "multipart/form-data"를 사용하는 것을 고려할 수 있습니다. 이 형식은 중국어를 지원하지만 이 형식을 사용할 때 요청 헤더에 "Content-Type: multipart/form-data;boundary=----XXXXXX"가 포함되어 브라우저가 자동으로 매개변수 값을 구문 분석하는 백엔드를 방해할 수 있는 구분 기호입니다.

해결책

위의 문제를 해결하기 위해 다음 세 가지 해결 방법을 사용할 수 있습니다.

방법 1: URL 인코딩을 수동으로 수행

매개변수를 전송할 때 URL 인코딩을 수동으로 수행한 다음 백엔드에서 디코딩할 수 있습니다. 매개변수는 JavaScript의 encodeURIComponent() 메소드를 사용하여 인코딩될 수 있습니다. 예:

$.ajax({
  type:'POST',
  url:url,
  data: {'name':encodeURIComponent('张三'),'age':20},
  success:function(data){
    console.log(data);
  }
});

백엔드에서 Java의 URLDecoder.decode() 메서드를 사용하여 디코딩합니다.

String name = URLDecoder.decode(request.getParameter("name"), "UTF-8");
int age = Integer.parseInt(request.getParameter("age"));

이 메서드는 더 번거롭고 프런트 엔드와 백 엔드 모두에서 인코딩 및 디코딩 작업이 필요합니다.

방법 2: 요청 헤더 수정

요청 헤더를 수정하고, "Content-Type"을 "application/json;charset=utf-8"로 변경하고, JSON 형식을 사용하여 데이터를 전송할 수 있습니다. 예:

$.ajax({
  type:'POST',
  url:url,
  contentType: "application/json;charset=utf-8",
  data: JSON.stringify({'name':'张三','age':20}),
  success:function(data){
    console.log(data);
  }
});

백엔드에서 Java의 JsonParser를 사용하여 JSON을 구문 분석합니다.

JsonParser parser = new JsonParser();
JsonObject object = parser.parse(json).getAsJsonObject();
String name = object.get("name").getAsString();
int age = object.get("age").getAsInt();

이 방법은 비교적 간단하지만 JSON 형식으로 데이터를 전송하는 데만 적합합니다.

방법 3: 백엔드 코드 수정

백엔드가 PHP를 사용하는 경우, 인코딩이나 디코딩 없이 $_POST 또는 $_REQUEST를 직접 사용하여 매개변수 값을 얻을 수 있습니다. 예:

$name = isset($_POST['name']) ? $_POST['name'] : '';
$age = isset($_POST['age']) ? intval($_POST['age']) : 0;

백엔드가 Java를 사용하는 경우 HttpServletRequest의 getInputStream() 메서드를 사용하여 매개변수 값을 얻을 수 있습니다. 예:

StringBuilder sb = new StringBuilder();
BufferedReader bufferedReader = null;
try {
  InputStream inputStream = request.getInputStream();
  bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
  String line = null;
  while((line = bufferedReader.readLine()) != null) {
    sb.append(line);
  }
} catch (IOException e) {
  e.printStackTrace();
} finally {
  if(bufferedReader != null) {
    try {
      bufferedReader.close();
    } catch (IOException e) {
      e.printStackTrace();
    }
  }
}

다음으로 JsonParser를 사용하여 JSON 형식의 데이터를 구문 분석하거나 application/x-www-form-urlencoded 형식의 데이터를 수동으로 구문 분석할 수 있습니다.

요컨대, 각 방법마다 장단점이 있으며, 특정 상황에 따라 가장 적합한 방법을 선택할 수 있습니다. 어떤 방법을 사용하든 중국어 매개변수의 인코딩 및 디코딩에 주의를 기울여 문자가 깨지는 것을 방지해야 합니다.

위 내용은 jquery ajax 매개변수가 잘못된 문자를 전달하는 경우 수행할 작업의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
CSS : 같은 DOM에서 여러 ID를 사용할 수 있습니까?CSS : 같은 DOM에서 여러 ID를 사용할 수 있습니까?May 14, 2025 am 12:20 AM

아니요, 당신은 uplemultipleidsinthesamedom.1) idsmustbeuniqueperhtmlspecification, andusingduplicatescancauseSconsistentBrowserBehavior.2) useclassesforstylingmultipleelements, attributesectorscendats eftibutes 및 descenderfortrecture

HTML5의 목표 :보다 강력하고 액세스 가능한 웹 생성HTML5의 목표 :보다 강력하고 액세스 가능한 웹 생성May 14, 2025 am 12:18 AM

html5aimstoenhancewebcapabilities, MakingItmoredynamic, Interactive, and Accessible.1) itsupportsmultimediaelementslikeand, 2) SemanticlementsImpreveAcessibilityandCodeReardability.3) 특징적인 부대, 응답 Whebappl

HTML5의 중요한 목표 : 웹 개발 및 사용자 경험 향상HTML5의 중요한 목표 : 웹 개발 및 사용자 경험 향상May 14, 2025 am 12:18 AM

html5aimstoenhancewebdevelopmentandusereerexperiencetroughsemanticstructure, multimediaintegration 및 performanceimprovements

html5 : 안전합니까?html5 : 안전합니까?May 14, 2025 am 12:15 AM

html5isnotinherentlyinsecure, buttsfeaturescanleadtosecurityRiskSifMisusedOrimProperSimplemented.1) USETHETSANDTRIFICEINIFRAMESTOCONTROLEMEDEDEDENDENDENDENDENDENDENDENDENDENTANDENTANDERVULNERABILITIESLIKECLIKEJACKINGINITIONSLIKECLIKETHOING.2) 피난처에 대한 비난을 피하십시오

이전 HTML 버전과 비교할 때 HTML5 목표이전 HTML 버전과 비교할 때 HTML5 목표May 14, 2025 am 12:14 AM

html5aimedtoenhanceWebDevelopmentByIntrictionmanticalLiticalEmentements, nativeMultiMediasupport, 개선 된 정보 및 및 플린 컨테이션, html4andxhtml.1) itintructed -temantictagsiver ,, 개선 부양

CSS : ID 선택기를 사용하는 것이 좋지 않습니까?CSS : ID 선택기를 사용하는 것이 좋지 않습니까?May 13, 2025 am 12:14 AM

ID 선택기를 사용하는 것은 본질적으로 CSS에서 나쁘지 않지만주의해서 사용해야합니다. 1) ID 선택기는 고유 한 요소 또는 JavaScript 후크에 적합합니다. 2) 일반적인 스타일의 경우 클래스 선택기가보다 유연하고 유지 관리 가능하므로 사용해야합니다. ID 및 클래스 사용의 균형을 유지함으로써보다 강력하고 효율적인 CSS 아키텍처를 구현할 수 있습니다.

HTML5 : 2024 년 목표HTML5 : 2024 년 목표May 13, 2025 am 12:13 AM

HTML5'SGOALSIN2024FOCUSONERFINEMENTANDENDEND 및 최적화, NOTNEWFEATURES.1) 최적화 된 렌더링을 향상시킵니다

HTML5가 개선하려고했던 주요 영역은 무엇입니까?HTML5가 개선하려고했던 주요 영역은 무엇입니까?May 13, 2025 am 12:12 AM

html5aimedtoimprovewebdevelopmentinfourkeyareas : 1) Multimediasupport, 2) Semantictructure, 3) Formcapabilities, 및 4) OfflineandStorageOptions.1) Html5intrudceDandlements, Simplifying MediaembeddingandenUsereXperxpercepence.2) NewSmanticallementalmentalmentementlementmentmentmentmentmentmentmentmentmentmentmentmentmentmentmentmentmentmentalments

See all articles

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

Video Face Swap

Video Face Swap

완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

뜨거운 도구

MinGW - Windows용 미니멀리스트 GNU

MinGW - Windows용 미니멀리스트 GNU

이 프로젝트는 osdn.net/projects/mingw로 마이그레이션되는 중입니다. 계속해서 그곳에서 우리를 팔로우할 수 있습니다. MinGW: GCC(GNU Compiler Collection)의 기본 Windows 포트로, 기본 Windows 애플리케이션을 구축하기 위한 무료 배포 가능 가져오기 라이브러리 및 헤더 파일로 C99 기능을 지원하는 MSVC 런타임에 대한 확장이 포함되어 있습니다. 모든 MinGW 소프트웨어는 64비트 Windows 플랫폼에서 실행될 수 있습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

Dreamweaver Mac版

Dreamweaver Mac版

시각적 웹 개발 도구

DVWA

DVWA

DVWA(Damn Vulnerable Web App)는 매우 취약한 PHP/MySQL 웹 애플리케이션입니다. 주요 목표는 보안 전문가가 법적 환경에서 자신의 기술과 도구를 테스트하고, 웹 개발자가 웹 응용 프로그램 보안 프로세스를 더 잘 이해할 수 있도록 돕고, 교사/학생이 교실 환경 웹 응용 프로그램에서 가르치고 배울 수 있도록 돕는 것입니다. 보안. DVWA의 목표는 다양한 난이도의 간단하고 간단한 인터페이스를 통해 가장 일반적인 웹 취약점 중 일부를 연습하는 것입니다. 이 소프트웨어는

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구