문제

URL을 반환하는 일반적인 기능이 있습니다. (플러그인 내에서 URL을 리소스 [이미지, 스타일 시트]로 반환하는 플러그인 함수입니다).

해당 URL에서 get 매개 변수를 사용합니다.

HTML 페이지 내에서 이러한 URL을 사용하려면 W3C 유효성 검사를 통과하려면 앰퍼 샌드를 마스킹해야합니다.

/plugin.php?plugin=xyz&resource=stylesheet&....

그러나 URL을 AJAX 호출의 "URL"매개 변수로 사용하려면 Ampersand가 올바르게 해석되지 않아 통화를 망쳐 놓습니다.

Ajax 전화로 무언가를 얻고 일할 수 있습니까?

이 플러그인 모델이 여러 번 (그리고 아마도 많은 사람들이) 재사용하기 때문에 url 생성 함수 (의도적 인 경우 = "ajax"또는 무엇이든 URL을 조작하는 것에 매개 변수를 추가하지 않기를 원합니다. 가능한 한 간단하게 원합니다.

도움이 되었습니까?

해결책

응용 프로그램의 한 부분이 여러 계층을 가로 지르는 문제가 발생하는 것 같습니다. 이 경우 플러그인입니다.

지정된 URL RFC 1738 URL은 a & 키/값 쌍을 서로 분리하는 토큰. 그러나 Ampersand는 HTML의 예약 된 토큰이므로 탈출해야합니다. &. Ampersands를 탈출하는 것은 HTML의 인공물이므로 플러그인을 직접 탈출하지 않아야합니다. 대신 HTML 마크 업에 내장 될 수 있도록 표준 URL을 피하는 기능이나 무언가가 있어야합니다.

다른 팁

이것이 실제로 일어날 수있는 유일한 곳은 다음과 같습니다.

  • xhtml 사용
  • 텍스트/html로 제공합니다
  • 인라인 사용 <script>

이것은 행복한 조합이 아니며 솔루션은 사양에서.

스크립트를 사용하는 경우 외부 스크립트를 사용하십시오.

XHTML 미디어 유형에도 동일한 조언이 포함되어 있지만 해결 방법을 제공합니다 당신이 그것을 무시하기로 선택한 경우.

JavaScript가 URL 값을 객체로 읽을 수있는 방식으로 문자열 대신 JSON을 반환 해보세요. 해당 문제가 없어야합니다. 그 외에는 다음과 같은 것을 사용하여 문자열을 디코딩하는 간단한 HTML을 사용해보십시오.

function escapeHTML (str)
{
   var div = document.createElement('div');
   var text = document.createTextNode(str);
   div.appendChild(text);
   return div.innerHTML;
}; 

분명히 당신은 당신이 만들 수있는 dom 요소에 대한 참조를 제거하고 싶을 것입니다 (예제를 단순화하기 위해 여기서하지 않은 것).

나는이 기술을 내 작업에서 만든 Ajax 사이트에서 사용 하고이 문제를 해결하기 위해 여러 번 사용했습니다.

양식의 마크 업이있을 때 :

<a href="?a=1&amp;b=2">

그런 다음의 가치 href 속성입니다 ?a=1&b=2. 그만큼 &amp; HTML/XML에서 탈출 시퀀스 일뿐 아니라 속성 값에 영향을 미치지 않습니다. 이것은 다음과 유사합니다.

<a href="&lt;&gt;">

속성의 값이있는 곳 <>.

대신 양식의 코드가있는 경우 :

<script>
var s = "?a=1&b=2";
</script>

그런 다음 JavaScript 기능을 사용할 수 있습니다.

<script>
var amp = String.fromCharCode(38);
var s = "?a=1"+amp+"b=2";
</script>

이를 통해 유효한 HTML 또는 유효한 XHTML 만 유효한 코드가 둘 다 유효 할 수 있습니다. (자세한 정보는 Dorwald의 의견을 참조하십시오.)

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top