0

2D 配列を js 変数に json としてロードする必要がある php スクリプトを作成しています。最初に配列を作成し、次に json_encode を使用して文字列に変換します。次に、少しの js を実行して、クライアント側でアクセスできるようにします。そのようです:

$sBaseData = Filters::$sFilterBaseTypeData;
$sBaseData = str_replace('\r',' ',$sBaseData);
$sBaseData = str_replace('\n',' ',$sBaseData);
$sBaseData = str_replace('\t',' ',$sBaseData);

echo <<<HTML
    <script type="text/javascript">
        var validation_data = JSON.parse('$sBaseData');
    </script>
HTML;

Firefox はここで予期しない文字について不平を言います:

var validation_data = JSON.parse('{"enumeration":{"js":"","msg":""},"date":{"js":" var parts = widget.value.split('-'); var d = new Date(parts[0],parts[1],parts[2]); PASS = (d.getDay()>=1); ","msg":"Invalid date. Please Enter a date in the format: YYYY-MM-DD"},"text":{"js":"","msg":"what did you do?"},"integer":{"js":"if (isNaN(widget.value)) { PASS = false; } else { intVal = parseInt(widget.value); PASS = (widget.value == intVal); } ","msg":"Please enter an integer value"},"decimal":{"js":"PASS = isNaN(widget.value); ","msg":"Please enter a number"},"group":{"js":"","msg":""},"dealer":{"js":"","msg":""}}')

http://jsonlint.com/を使用して、どの文字に問題があるかを調べてみましたが、すべて有効で素晴らしいと書かれています。問題を起こしていた一部の文字を置き換えましたが、他に置き換える必要があるものはありますか?

4

3 に答える 3

0

問題は、文字列を引用するために'使用しているときに文字列に含まれていることです。'

json文字列が有効な場合は、解析する必要もありません。以下が機能します。

echo <<<HTML
    <script type="text/javascript">
        var validation_data = {$sBaseData};
    </script>
HTML;
于 2012-05-28T07:41:16.720 に答える
0

JSONは有効ですが、jsコードでは、単純な引用符で解析関数の引数を閉じます。

このようにしてみてください:

"date":{"js":" var parts = widget.value.split(\'-\');
于 2012-05-28T07:41:59.760 に答える
0

ええと...

var parts = widget.value.split('-');

一重引用符を使用する文字列にそれを入れると、それが壊れます。JSON エンコーダーを使用して JavaScript リテラルを出力します

于 2012-05-28T07:36:46.483 に答える