0

我想将每个具有值的键发布到 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
        }
});

应用程序.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)
4

2 回答 2

0

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

阿贾克斯:

$.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()
    ...
于 2016-09-07T07:58:53.857 回答
0

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;
于 2016-09-07T07:18:59.483 回答