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 格式更美觀一些

  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傳數據, 需要注意序列化 和反序列化

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


 
        
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM