2013-11-23 215 views
1

在SO上有一個類似的題目問題,但它確實與我的問題沒有任何關係。將JQuery數組傳遞給Flask變量

所以,我有一些JQuery數組,我在一個函數中創建。現在,我想在同一個函數中爲這些JS數組設置一些燒瓶變量。我想這樣做的原因是,我然後設置一個元素的href並路由我的用戶。

下面是當前JS代碼:

JQuery的

//Filter Search 
$(function() { 
    $('#filter_search').click(function() {    
     var entities = JSON.parse(JSON.stringify($('#filterform').serializeObject())).checkboxes; 
     var data = JSON.parse(JSON.stringify($('#filterform').serializeObject())).checkboxeslower; 
     if(typeof data == "string") { 
      data = $.makeArray(data); 
     } 

     //Here I want to set Flask variables like {{entities}} and {{data}} 

     //Then, I will call the next line 
     $("#filter_search").attr('href', "{{ url_for('filter_search', entities='{0}', data='{1}'.format(entities, data))}}"); 

     //Then, if all goes as planned, it will change the href and redirect the user to filtered_search 
    }); 
}); 

回答

1

你不能做到這一點,你所希望的方式,因爲模板在服務器上運行,你的jQuery函數在客戶端運行。

操作的順序如下:

  • 客戶端請求的頁面
  • 服務器通過渲染模板的響應。在模板中的任何url_for()或其他Python代碼運行在這個時候
  • 客戶端接收的頁面,並在其中
  • 你的jQuery函數最終執行執行JavaScript的,但那時已經太晚了改變url_for()輸出。

你需要做什麼才能使這項工作是建立在Javascript中的網址。

請參閱this answer,其中我提出了兩個可能的解決方案來解決類似的問題。