Und das ist, was meine request.query_string sieht aus {%22name%22:%22John%20Doe%22,%22age%22:%2221%22}
Also wie bekomme ich die name Und age. Bitte korrigieren Sie mich, wenn ich irgendwo falsch liege. Vielen Dank im Voraus.
Verwenden request.json.get('name')
– kartheek
17. März 2015 um 4:44 Uhr
Jason B
Sie müssen nicht wirklich Daten von einem abrufen ImmutableMultiDict. Es gibt ein paar Fehler in dem, was Sie haben, die Sie daran hindern, die Antwort einfach als JSON-Daten abzurufen. Zunächst müssen Sie die Parameter Ihres Ajax-Aufrufs leicht anpassen. Sie sollten den Anruftyp als hinzufügen POST. Außerdem, datatype sollte so geschrieben werden dataType. Ihr neuer Anruf sollte lauten:
var data = {"name":"John Doe","age":"21"};
$.ajax({
type: 'POST',
contentType: 'application/json',
url: '/post/data',
dataType : 'json',
data : JSON.stringify(data),
success : function(result) {
jQuery("#clash").html(result);
},error : function(result){
console.log(result);
}
});
Die Daten werden nun tatsächlich als Post-Request mit verschickt json Typ. Auf dem Flask-Server können wir die Daten nun wie folgt als Son-Informationen auslesen:
@app.route('/post/data',methods=['GET','POST'])
def postdata():
jsonData = request.get_json()
print jsonData['name']
print jsonData['age']
return "hello world" #or whatever you want to return
Dies wird gedruckt John Doe Und 21 erfolgreich.
Lassen Sie mich wissen, ob dies für Sie funktioniert oder wenn Sie weitere Fragen haben!
Bearbeiten: Sie können den Erfolg des Ajax-Aufrufs von Flask wie folgt zurückgeben:
# include this import at the tomb
from flask import jsonify
@app.route('/post/data',methods=['GET','POST'])
def postdata():
...
return jsonify(success=True, data=jsonData)
Diese Methode funktioniert gut error Funktion.
– Suraj Palwe
17. März 2015 um 5:24 Uhr
Was geben Sie von Ihrer Funktion zurück? Ich bringe Ihnen eine Lösung. Grundsätzlich, was soll die Funktion zurückgeben und was wollen Sie #clash anzeigen?
– Jason B
17. März 2015 um 5:28 Uhr
Okay, ich habe den Punkt. Ich sollte von meiner Funktion als einige Daten (Json) zu Ajax zurückkehren, damit es erfolgreich empfangen wird, sonst wäre es nur ein Fehler. Vielen Dank für Ihre freundliche Hilfe
– Suraj Palwe
17. März 2015 um 5:33 Uhr
Ja, ich habe gerade die richtige Vorgehensweise in der Antwort hinzugefügt.
– Jason B
17. März 2015 um 5:35 Uhr
Der Haken dabei ist, dass Sie immer angeben müssen contentType in Ajax-Anfrage abgesehen von dataType. stackoverflow.com/questions/14322984/…
Wenn Sie Dateien hochladen, anstatt das Formular zu verwenden, ändern Sie es einfach in request.files.to_dict()
– Mohab Khaled
27. Juli 2022 um 16:24 Uhr
Ich bin auf diese Seite gekommen, weil ich versuche, ein Formular mit AJAX zu senden, und ich habe endlich eine Lösung gefunden. Und die Lösung besteht darin, JSON zu überspringen (ich hoffe, dies hilft anderen bei derselben Suche):
$.ajax({
type: "POST",
url: my_url,
data: $("#formID").serialize(), //form containing name and age
success: function(result){
console.log(result);
}
});
Dann auf dem Flask-Server:
app.route('/my_url', methods = [POST])
def some_function():
name = request.form['name']
age = request.form['age']
# do what you want with these variables
return 'You got it right'
gute nachrichten john
Ich habe das Problem gelöst, indem ich den contentType so als application/JSON hinzugefügt habe
data ={
type:'POST',
contentType:'application/json',
otherData: 'foo'
}
Sie können nun wie folgt auf die Daten im Flask-Backend zugreifen:
Verwenden
request.json.get('name')
– kartheek
17. März 2015 um 4:44 Uhr