2013-03-21 441 views
8

我知道如何將數據從python的jinja模板傳遞到javascript,但我想將一個JavaScript變量傳遞給python。我想在不重新加載頁面的情況下執行此操作。那可能嗎?將數據從JavaScript傳遞到Flask

+5

使用AJAX請求? – monkut 2013-03-21 00:22:17

回答

4

是的,就像monkut說的 - 我相信你想用JSON和Javascript/jQuery。

這將允許允許從客戶端到服務器的通信並返回。

我發現最適用的例子在燒瓶中的片段/模式:http://flask.pocoo.org/docs/patterns/jquery/

-1

從您的視圖代碼創建一個JSON字符串說,jsonData並在神社模板,喜歡寫東西

<script type="text/javascript"> 
    var data = {{ jsonData }}; 
</script> 
+1

該OP特別提到,他已經知道如何做到這一點,並希望走向另一個方向。 – pydsigner 2016-06-03 02:19:01

2

我在我的項目中做了類似的工作,並希望在此分享我的代碼。我需要找出哪些帖子被選中,並且我將所選帖子設置爲服務器端的全局變量,以便我將其用於以後的比較。這就是我將選定的帖子傳遞給Javascript的方式。

<a class="label label-primary" onclick="myFunction({{very.id}})" > Compare</a> 

現在從Javascript到燒瓶。

function myFunction(x) { 
     $.getJSON($SCRIPT_ROOT + '/check_selected', { 
     post: x 
     }, function(data) { 
      var response = data.result; 
      console.log(response); 
      } 
     }); 
} 

這是我如何通過使用JSON返回瓶的結果。

import json 
@main.route('/check_selected', methods=['GET','POST']) 
def check_selected(): 
    global selected 
    post = request.args.get('post', 0, type=int) 
    return json.dumps({'selected post': str(post)}); 

如前所述here,我們需要包括谷歌AJAX API以加載的jQuery:

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script> 
<script>window.jQuery || document.write('<script src="{{ 
    url_for('static', filename='jquery.js') }}">\x3C/script>')</script> 
+0

你將如何調用頁面加載功能,而不是用戶單擊按鈕,然後將數據從JavaScript傳遞給燒瓶 – 2017-08-19 14:39:20