0

I want to post each and every key with value to a function in the Flask framework to store them in a MySQL database. Would I be able do it this way?

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)
Kimberley Chong
  • 79
  • 1
  • 4
  • 12

2 Answers2

0

sessionStorage can't be converted to array

you can do something like this:

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

    }

and in the ajax:

data:localdata;
madalinivascu
  • 32,064
  • 4
  • 39
  • 55
0

Extending madalin's answer, I'd like to point out that you cannot work with sessionStorage directly from Flask, but only from you JS code. What you can do is an AJAX POST request with your keys/values from sessionStorage as a JSON string, and then accessing JSON in you Flask view with request.json or better request.get_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
    ...
})

Flask view:

@app.route("/savedata",methods=["POST"])
def savedata():
    your_json_as_dict = request.get_json()
    ...
vrs
  • 1,922
  • 16
  • 23