2016-03-21 28 views
2

URLに値をとり、divに挿入されるコンテンツを生成するエンドポイントがあります。 JavaScript変数を使用してurl_forというURLを作成したいと思います。ただし、は、variable1の値ではなく、文字列として渡されます。 JavaScript変数の値をurl_forに渡すにはどうすればよいですか?JavaScript変数をFlaskに渡すurl_for

function myFunction() { 
    var variable1 = "someString" 
    $('#demo').load(
     "{{ url_for('addshare2', share = '$variable1') }}" 
    ); 
} 

答えて

7

JinjaでJavaScriptを評価することはできません。 Jinjaがレンダリングされている間にサーバー側でURLを生成しようとしていますが、クライアントブラウザで実行されているJavaScriptでのみ使用可能な変数を参照しています。

クライアント側でURLを作成するのが最も簡単な方法です。 (私はあなたのルートがどのように見えるので、ここでの例だか分からない。)あなたはurl_forを使用することはできませんので

$('#demo').load('/url/for/addshare2/' + variable1); 

しかし、これはURLのハードコードにあなたが持っているので、非常に便利ではありません。これは、値を含むエンドポイントではなく、パラメータを渡すAJAXエンドポイントが望ましいことを示す良い兆候です。

@app.route('/addshare2', methods=['POST']) 
def addshare2(): 
    share = request.json['share'] 
    ... 
    return jsonify(result=...) 

url_forでURLを生成し、そのパラメータをフォームデータとして渡すことができます。

$.post(
    '{{ url_for('addshare2') }}', 
    {share: variable1}, 
    function (data) { 
     // do something with data on successful response 
    } 
); 
関連する問題