31

JQueryを使用して、dataStringをajax呼び出しに渡そうとしています。呼び出しでは、get パラメーターを作成し、受信側の php ページに送信します。問題は、データ文字列にアンパサンドが含まれており、HTML の厳密なバリデーターがそれを詰まらせていることです。

コードは次のとおりです。

$(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;
    });
});

バリデータ メッセージの例を次に示します。一般エンティティ「パスワード」のシステム識別子を生成できません。

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

(バリデーターでは、最初のアンパサンドの後の「p」が赤くマークされ、失敗のポイントを示します)。

4

5 に答える 5

36

次のように CDATA ブロック内に JavaScript を配置してみてください。

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

これにより、検証に合格するはずです。安全性を高めるために、CDATA タグを理解しない古いブラウザからそれらを隠すために、CDATA タグの周りに Javascript コメントを追加できます。

<script type="text/javascript">
/* <![CDATA[ */
// content of your Javascript goes here
/* ]]> */
</script> 
于 2008-12-10T04:04:08.820 に答える
6

注: CDATA ブロックで盲目的にテキストをラップする前に、CDATA の目的は無効な文字を有効にすることではないことに注意してください。

参照: http://www.flightlab.com/~joe/sgml/cdata.html

于 2008-12-10T23:00:07.453 に答える
1

、、、、またはxhtml のスクリプト ブロックのアンパサンドで機能すること\u0026があります。、、 、 、 、、 が機能しないような制限 (SGML の設計の誤りに対するまばたきの忠誠心) が必要な理由をお聞きしたいと思います。 スクリプト ブロックではタグやその他の SGML 要素が認識されないと簡単に言えないのはなぜですか? xhtml でターゲットを機能させられないのはなぜですか? 欠点を上回る SGML の利点はないと思います。現時点では、html5 がある程度利用可能ですが、xhtml は最も多くの開発者エラーをキャッチするバリデーターです。その起源を歴史的に考慮せずに xml を修正しましょう。&#38%26&amp<![CDATA[ ... ]]>
&nbspmathmltargetnested xml

于 2012-01-29T22:57:52.913 に答える
-1

私は試してみます:

var dataString = "email="+username+"&amp;password="+password+"&amp;remember="+remember;
于 2008-12-10T04:07:40.763 に答える