1

別の Web アプリケーション (つまり、django 関連ではない) で使用される xml のチャンクを格納するデータベース フィールドがあります。その xml のチャンクを取得して、ページが使用している JavaScript に挿入する必要があります。

私のテンプレートでは:

var netdata = "{% filter addslashes  %}{{netdata}}{% endfilter %}"

私のデータベースの変数 netdata は、次のようになります(複数行で、引用符が含まれています)。「addslashes」フィルターが引用符を処理すると思います。

上記により、「未終了の文字列リテラル」エラーが発生します。(おそらく改行のため)。xml、改行、およびすべてのチャンク全体を有効な javascript 変数にするには、どうすればよいですか?

詳細については、CytoscapeWebを使用しようとしています。そのデモで使用されているファイル Compound.js では、次のようなデータが取得されます。

        $.get(url, function(dt) {
        if (typeof dt !== "string") {
            if (window.ActiveXObject) {
                dt = dt.xml;
            } else {
                dt = (new XMLSerializer()).serializeToString(dt);
            }
        }

url は上記と同じです。

私は同様のことをしようとしていますが、djangoテンプレートを介してデータベースからデータを渡します(「外部ファイルの取得」部分全体をスキップします)。

(db に格納する前に xml を解析することを台無しにしたくないので、それを提案しないでください)。

4

2 に答える 2

1

あなたの問題は、生成されたJavaScriptが、次のようにすべての新しい行をエスケープしない限り、javascriptが実行できない「複数行の文字列」であることです。

var my_string = "hello \
                 world"

そのため、xml 文字列を出力する前に、すべての改行を a\と改行に置き換えるか、改行を完全に削除することができます。

フィルターescapejsがそれをしてくれると思います。{{ netdata|escapejs }}

于 2013-10-02T18:17:55.040 に答える