python flask下傳數據到js

  1. 首先要清楚後臺和前端交互所採用的數據格式。
    通常選JSON,由於和js完美貼合。

  2. 後臺返回的數據進行序列化
     
      
    在/homepageRecommend 路由的 view方法中返回序列化數據
    1)
    dict = {"a":1, "b":2}
    import json json.dumps(dict) 2) from flask import jsonify jsonify(dict) #在調用jsonfiy 有時會報錯,緣由是jsonify 對象必須是dict

     這兩種序列化方式主要的區別是 jsonify 格式更美觀一些javascript

  3. 在前端利用jquary 對json進行反序列化
    $.getJSON('/homepageRecommend'
                    , function(data) {                    // 從Flask返回的數據
                        alert(data.a)                     // 瀏覽器彈窗顯示 後端返回的dict["a"]的值,這次是1
    }
    )
    //getJSON 函數有三個參數 //第一個是後端返回的數據的url //第二個是要返回給服務器的data 是可選的 //第三個是對獲取的反序列化數據 要繼續進行的操做的函數

     

  4. 前端經過$.get() 或者$.post()方法發送請求,後端利用json.dumps(dict)返回json數據,在js中利用eval()方法,把json數據轉換爲js對象,後再作其餘處理
    $.post("{{ url_for('statistics.HomeRecommend') }}",{"id":a},function(reco_list){
     var reco_list  = eval(reco_list)
    //do others
    })
  5. 最近在使用icharts畫圖的 過程當中發現了另一種傳數據的方式,view中使用
    return render_template('statistics/numberofuserlogin/login_number.html', result_json = json.dumps(result))
    js中直接用 js_object = eval('{{result_json|safe }}') 注意 必定要加|safe 過濾不然會對字符串進行轉義致使解析錯誤 使用這種方式傳數據,可以在渲染模板的同時傳數據,避免定義新的url拿數據

     總結: flask 後臺給前端js傳數據, 須要注意序列化 和反序列化html

  更多資料參考 http://docs.jinkan.org/docs/flask/patterns/jquery.html前端

相關文章
相關標籤/搜索