【问题标题】:POST sessionStorage object with AJAX to Flask使用 AJAX 将 sessionStorage 对象发布到 Flask
【发布时间】:2016-09-07 07:08:54
【问题描述】:

我想将每个具有值的键发布到 Flask 框架中的函数中,以将它们存储在 MySQL 数据库中。我可以这样做吗?

JQuery

$.ajax({
        type: "POST",
        url: "{{url_for('savedata')}}", // Function to send data
        data: sessionStorage.serializeArray(),
        success: function(data) {
            window.location.replace("/quit"); // Redirect to another page after saving data
        }
});

app.py

conn = mysql.connect()
cursor = conn.cursor()
@app.route("/savedata",methods=["POST"])
def savedata():
sql = "INSERT INTO data_table "
data = ""
for (var i = 0; i < sessionStorage.length; i++) {
    var item = sessionStorage.getItem(sessionStorage.key(i));
    data += "item " + "VARCHAR(255)"
}
sql += data
cursor.execute(sql)

【问题讨论】:

    标签: jquery mysql ajax flask flask-mysql


    【解决方案1】:

    sessionStorage 无法转为数组

    你可以这样做:

     var localdata = {};
       for ( var i = 0, len = localStorage.length; i < len; ++i ) {
               localdata[localStorage.key( i )] = localStorage.getItem( localStorage.key( i ) );
    
        }
    

    在 ajax 中:

    data:localdata;
    

    【讨论】:

      【解决方案2】:

      扩展 madalin 的答案,我想指出您不能直接从 Flask 使用 sessionStorage,而只能从您的 JS 代码中使用。您可以做一个 AJAX POST 请求,将 sessionStorage 中的键/值作为 JSON 字符串,然后使用 request.json 或更好的 request.get_json 在 Flask 视图中访问 JSON:

      AJAX:

      $.ajax({
          url: "{{ url_for('savedata', _external=True) }}",
          type: 'POST',
          dataType: 'json',
          contentType: 'application/json;charset=UTF-8',
          accepts: {
           json: 'application/json',
          },
          data: JSON.stringify(localdata), // see madalin's answer
          ...
      })
      

      烧瓶视图:

      @app.route("/savedata",methods=["POST"])
      def savedata():
          your_json_as_dict = request.get_json()
          ...
      

      【讨论】:

      • 在 Flask 视图中,我会将 JSON 键和值作为字典检索,对吗?
      • @KimberleyChong 是的,作为 Python 字典。
      • @KimberleyChong 很高兴它有帮助!请接受我的回答并投票,以便其他人知道它有效。
      • 但是,我仍然遇到问题。代码不会执行 AJAX
      • @KimberleyChong 最好发布一个带有最小工作示例的单独问题,否则很难找出问题所在。
      猜你喜欢
      • 1970-01-01
      • 2017-06-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-21
      • 2023-03-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多