-1

関数onclickを呼び出したいのですが、次のようなjson_encodeパラメーターを使用します。

<a href="#" onclick="javascript:table1Modif(<?php echo substr(json_encode($res['base']),1,-1); ?>);return false;">

そして、Jquery関数はパラメータに警告するだけです:

<script>
    function table1Modif(key){
        $('#table1').html(function() {
            alert(key);
        }); 

    }
</script>

しかし、「未定義」のエラーがあります。json_encodeが原因だと確信していますが、解決方法がわかりません。ありがとうございました!

4

1 に答える 1

3

json_encodeJavaScript文字列リテラル(有効なJSONではありません)を生成するために文字列をに渡しているようです。

substrこの文字列から引用符を削除するために使用しています。

したがって、JavaScriptは識別子を認識します(そのコンテキストでは変数として扱われます)。

文字列リテラルが必要なので、最初に行うことはsubstr呼び出しを削除することです。

これにより、新しい問題が発生します。文字列をHTMLドキュメントに挿入していますが、HTMLとして表現していません。したがって"、文字列リテラルの先頭にある文字は、不要な属性値の末尾として扱われます。

HTML以外のコンテンツをHTMLドキュメントに挿入する場合は、HTMLとして表現する必要があります。htmlspecialcharsこれを行うには、関数を介してコードを実行します。

onclick="table1Modif(<?php 
    echo htmlspecialchars(
        json_encode($res['base'])
    );
?>);return false;"

ちなみに、まったく役に立たないjavascript:ラベルを削除しました。ループがbreakないcontinueので、何もしていません。あなたがそれにいる間、あなたはhref="#"もっと賢明なものと取り替えるべきです。プログレッシブエンハンスメント控えめなJavaScriptの原則に従ってください。

于 2013-02-06T13:51:55.383 に答える