2017-03-19 44 views
1

我想與url_for使用瓶。問題是,當我試圖用JavaScript變量的值啓動警報時,一切似乎都沒有問題,但是當我嘗試使用url_for啓動警報時,變量的內容未打印出來。我做錯了什麼?或者我的代碼中缺少什麼?Flaskr url_for與JavaScript變量作爲參數不工作python

如何將JavaScript變量傳遞給url_for函數?

的html代碼:

<a class="dissable_user_btn" data-user_id="{{user.id}}" href="#" title="Change Status"><i class="fa fa-plug"></i> 
</a> 

JS代碼:

<script type="text/javascript"> 
    $(document).ready(function(){ 
     $('.dissable_user_btn').click(function(event) { 
      var user_id = $(this).data("user_id") 
      alert(user_id) //everything ok 
      alert ('{{url_for('.dissable', _id=user_id)}}'); //dont print the valur of user_id 
</script> 

回答

1

簡短的回答:你不能。 Flask & Jinja2在服務器端渲染模板(例如,Flask在將HTML發送到Web瀏覽器之前將所有的{{ }}東西翻譯)。

對於這樣一個URL,其中包含一個變量作爲路徑的一部分,您需要在JavaScript中手動構建該變量。如果這是一個XHR端點,我建議使用GET/POST將值傳遞給服務器,這比通過這種方式構建URL更好。 這樣你可以使用Jinja:

$(document).ready(function(){ 
    var baseUrl = "{{ url_for('disable') }}"; 

    $('.dissable_user_btn').click(function(event) { 
     var user_id = $(this).data("user_id"); 

     // first part = url to send data 
     // second part = info to send as query string (url?user=user_id) 
     // third parameter = function to handle response from server 
     $.getJSON(baseUrl, {user: user_id}, function(response) { 
      console.log(response); 
     }); 
    }); 
}); 
+0

男人,非常感謝。正是我在想什麼 – franvergara66