2016-09-07 3 views
0

Ich möchte jeden Schlüssel mit Wert auf eine Funktion im Flask-Framework posten, um sie in einer MySQL-Datenbank zu speichern. Würde ich es so schaffen?POST sessionStorage Objekt mit AJAX to Flask

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) 

Antwort

0

session nicht zu Array umgewandelt werden können

Sie etwas tun können:

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

    } 

und in der Ajax:

data:localdata; 
0

madalin Antwort erweitern, würde Ich mag darauf hinweisen, dass Sie nicht mit sessionStorage direkt von Flask arbeiten können, aber nur von Ihnen Code JS. Was Sie tun können, ist eine AJAX-POST-Anfrage mit Ihrem Schlüssel/Werte von session als JSON-String, und den Zugriff auf JSON dann in Ihnen Ansicht Kolben mit request.json oder besser 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 Blick :

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

In der Flask-Ansicht würde ich die JSON-Schlüssel und Werte als ein Wörterbuch richtig abrufen? –

+0

@KimberleyChong Ja, als Python-Wörterbuch. – vrs

+0

@KimberleyChong froh, dass es geholfen hat! Bitte, akzeptiere meine Antwort und mein Lob, damit andere wissen, dass es funktioniert hat. – vrs