0

jqueryの.getJSON呼び出しで取得したデータをjinja2変数としてアクセスすることは可能ですか?

 $.getJSON(
            $SCRIPT_ROOT +"/gitem/"+node.id,
            function(data){
                if (data.length > 0){

                    $.each(data, function(index,val_dict) {




                        var button_id = "button_"+String(index);
                        var popup_id = "element_to_pop_up_"+String(index);

                        var append_string = sprintf('<div class="icony"><img src="%s"  height="75" id="%s" >%s</div>',val_dict.img_url,button_id,val_dict.img_caption);
                        var bpopup_element = sprintf('<div id="%s"><a class="bClose"><img src="%s" width="500px">X<a/></div>',popup_id,val_dict.img_url)

                    $('.data_area').append(append_string+bpopup_element);

                        $('#'+popup_id).hide();

                        $('#'+button_id).bind('click', function(e) {
            e.preventDefault();
            $('#'+popup_id).bPopup();

                        });

                    });
                }
                else
                {
                    var append_string = '<div class="icony">No Images to display for this category</div>';
                    $('.data_area').append(append_string);
                }

                $("#list_viewer").css("display", "block");
            });

たとえば、上記の例では、データを取得してから js 内で DOM を構築しています。最善の方法は、.getJSON を介してデータをインポートし、そのデータを jinja2 変数として設定することです。

後でその変数を jinja2 テンプレート内で使用できますか?

それは可能ですか?


またはさらに良い...

.getJSON 関数内から jinja マクロを呼び出すことはできますか? また、jinja2内にjsonデータを埋め込むこともできます....

ポインタをありがとう...

4

1 に答える 1

1

おそらくそうではありません。通常、Jinja はサーバー上で実行され、クライアントに送信する前に Web サイト テンプレートをレンダリングします。クライアント (つまり、Web ブラウザー) はテンプレートにアクセスできません。

Jinja テンプレートを使用してクライアント側の JSON オブジェクトをレンダリングする場合は、Jasinjaを参照してください。これは、Jinja テンプレートを JavaScript に変換するツールであり、ブラウザーで使用できます。同様のツールが多数存在します。

最後に、もう 1 つの解決策は、JSON データを Web サーバーに送信し、Jinja を介してそれらを HTML にレンダリングし、結果の HTML を XMLHttpRequest 応答で送り返すことです。ただし、テンプレートのレンダリングに使用するのと同じサーバーからこの JSON データを取得した場合は、HTML をクライアントに直接送信し、そこから DOM に追加する方がよい場合があります。

于 2013-01-03T12:42:22.173 に答える