programing

jQuery의 $.ajax URL 인코딩 문제

subpage 2023. 10. 26. 21:04
반응형

jQuery의 $.ajax URL 인코딩 문제

저는 REST 서비스에 데이터를 보내고 검색하기 위해 jQuery의 $.ajax 방법을 사용하고 있습니다.$.ajax 메서드에 제공하는 URL 중 일부는 공백과 기타 특수 문자를 인코딩해야 합니다.

문제는 Chrome, Safari(웹킷), Internet Explorer 브라우저에 있습니다.Firefox POST는 인코딩된 URL에 있지만 다른 브라우저는 인코딩되지 않은 URL에 게시합니다.

예를 들어 다음과 같습니다.

$.ajax ({
  url: "http://localhost:8080/rest/123/Product Line A/[Product Type B]",
  type: "POST",
  dataType: "json",
  data: { ... },
  success: function(...){},
  error: function(...){}
})

Firefox는 다음 형식으로 URL을 게시합니다.

http://localhost:8080/rest/123/Product%20Line%20A/%5BProduct%20Type%20B%5D

Chrome, Safari, IE는 다음과 같은 형식으로 URL을 게시합니다.

http://localhost:8080/rest/123/Product Line A/[Product Type B]

REST 서비스에서는 인코딩된 (Firefox) 형식을 사용할 수 있습니다. 모든 브라우저에서 일관성을 유지할 수 있는 방법이 있습니까?

미리 감사드립니다!

자바스크립트의encodeURI()URL을 "Firefox 형식"으로 인코딩하는 기능을 사용합니다.

합격[Product Type B]인코딩되지 않은 형태는 유효하지 않으므로 브라우저에서 무엇을 만들 것인지 정의되지 않습니다.

제품 타입 부분에 대해 a를 합니다.

.serialize()가 jquery한 방법이 될 것 같습니다.

여기서 확인하기: http://api.jquery.com/serialize/

jquery: http://plugins.jquery.com/project/URLEncode 을 위한 플러그인도 있습니다.

아니면 자바스크립트 방식으로...부호화하다URI 구성요소()

여기서 확인하기: http://www.w3schools.com/jsref/jsref_encodeURI.asp

빠른 해결책은encodeURI()$.ajax로 전달되기 전의 URL.$.ajax 함수를 얇은 포장지로 대체하여 {} 리터럴을 사용하고 인코딩할 수도 있습니다.원래 함수로 전달하기 전에 URL을 URI.

언급URL : https://stackoverflow.com/questions/4485808/jquerys-ajax-url-encoding-problems

반응형