programing

어떻게 하면 자바스크립트 문자열에서 앰퍼샌드를 이스케이프하여 페이지가 strict를 검증할 수 있습니까?

nicegoodjob 2023. 3. 25. 13:47
반응형

어떻게 하면 자바스크립트 문자열에서 앰퍼샌드를 이스케이프하여 페이지가 strict를 검증할 수 있습니까?

JQuery를 사용하여 dataString을 Ajax 콜에 전달하려고 합니다.콜에서는 get 파라미터를 구성하고 수신측의 php 페이지로 전송합니다.문제는 데이터 문자열에 앰퍼샌드가 포함되어 있고 HTML strict validator가 이를 체크하고 있다는 것입니다.

코드는 다음과 같습니다.

$(document).ready(function(){
    $("input#email").focus();
    $('#login_submit').submit(function(){
        var username = $('input#email').val();
        var password = $('input#password').val();
        var remember = $('input#remember').attr("checked");
        var dataString = "email="+username+"&password="+password+"&remember="+remember;
        $.post('login.php', dataString, function(data) {
            if (data == 'Login Succeeded.') {
                location.reload(true);
            } else {
                $("input#email").focus();
                $("#login_msg").html(data).effect("pulsate", {times: 2}, 1000); 
            }
        });         
        return false;
    });
});

검증자 메시지의 예를 다음에 나타냅니다.일반 엔티티 "password"의 시스템 ID를 생성할 수 없습니다.

var dataString = "email="+username+"&password="+password+"&remember="+rememb…

(검증기에서 첫 번째 앰퍼샌드 뒤의 "p"는 고장 지점을 나타내는 빨간색으로 표시됩니다).

다음과 같이 Javascript를 CDATA 블록에 넣습니다.

<script type="text/javascript">
<![CDATA[
// content of your Javascript goes here
]]>
</script> 

검증을 통과해야 합니다.CDATA 태그 주위에 Javascript 코멘트를 추가하여 CDATA 태그를 이해하지 못하는 이전 브라우저로부터 숨길 수 있습니다.

<script type="text/javascript">
/* <![CDATA[ */
// content of your Javascript goes here
/* ]]> */
</script> 

"\u0026"은 동작합니다!

주의: 텍스트를 CDATA 블록으로 무작정 래핑하기 전에 CDATA의 목적은 유효하지 않은 문자를 유효하게 하는 것이 아닙니다.

참조: http://www.flightlab.com/ ~http/http/http/cdata.http:/http:

가끔씩\u0026,&#38,%26,&amp, 또는<![CDATA[ ... ]]>스크립트 블록의 앰퍼샌드에 대해 xhtml로 동작합니다.
SGML 설계상의 오류에 대한 링크 로열티)도 왜 그런 제한을 원하는지 묻고 싶습니다.&nbsp,mathml,target,그리고.nested xml할 수 있습니다.
스크립트 블록에서는 태그나 다른 SGML이 인식되지 않는다고 간단히 말할 수 없는 이유는 무엇입니까?xhtml은 왜 타겟이 동작하지 않는가?
단점보다 SGML의 장점이 없다고 생각합니다.현재 html5는 어느 정도 이용 가능하지만 개발자 오류를 가장 많이 포착하는 검증자는 xhtml입니다.xml의 기원에 관계없이 xml을 수정해 봅시다.

나는 시도한다:

var dataString = "email="+username+"&amp;password="+password+"&amp;remember="+remember;

언급URL : https://stackoverflow.com/questions/355043/how-do-i-escape-an-ampersand-in-a-javascript-string-so-that-the-page-will-valida

반응형