2013-03-21 16 views
8

Ich weiß, wie man Daten mit einer jinja Vorlage von Python in Javascript weitergibt, aber ich möchte eine Javascript-Variable in Python übergeben. Ich würde es gerne tun, ohne die Seite neu zu laden. Ist das möglich?Weitergabe von Daten aus Javascript in Flask

+5

eine Ajax-Anfrage benutzen? – monkut

Antwort

4

Ja, wie Mönch sagte - ich glaube, dass Sie JSON und Javascript/jQuery verwenden möchten.

Dies ermöglicht die Kommunikation vom Client zum Server und wieder zurück.

Die anwendbar Beispiel war ich Schnipsel/Muster in den Fläschchen gefunden: http://flask.pocoo.org/docs/patterns/jquery/

-1

Erstellen Sie eine JSON-String aus der Ansicht Code sagen, jsonData und in Ihrem Jinja Vorlage, schreiben Sie etwas wie

<script type="text/javascript"> 
    var data = {{ jsonData }}; 
</script> 
+1

Das OP erwähnte ausdrücklich, dass er bereits wusste, wie das geht und wollte die andere Richtung gehen. – pydsigner

2

Ich habe in meinem Projekt eine ähnliche Arbeit geleistet und möchte meinen Code hier teilen. Ich muss herausfinden, welcher Beitrag ausgewählt ist, und ich habe den ausgewählten Beitrag als eine globale Variable auf der Serverseite eingestellt, so dass ich ihn für einen späteren Vergleich verwenden kann. So übergebe ich meinen ausgewählten Post in Javascript.

<a class="label label-primary" onclick="myFunction({{very.id}})" > Compare</a> 

Jetzt von Javascript zu Flask.

function myFunction(x) { 
     $.getJSON($SCRIPT_ROOT + '/check_selected', { 
     post: x 
     }, function(data) { 
      var response = data.result; 
      console.log(response); 
      } 
     }); 
} 

So gebe ich das Ergebnis aus der Flasche mit JSON zurück.

import json 
@main.route('/check_selected', methods=['GET','POST']) 
def check_selected(): 
    global selected 
    post = request.args.get('post', 0, type=int) 
    return json.dumps({'selected post': str(post)}); 

Wie here erwähnt, müssen wir Google AJAX API, um schließen jquery zu laden:

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script> 
<script>window.jQuery || document.write('<script src="{{ 
    url_for('static', filename='jquery.js') }}">\x3C/script>')</script> 
+0

Wie würden Sie Funktion beim Laden der Seite anstelle von Benutzer klicken Sie auf Schaltfläche und dann übergeben Sie Daten von Javascript zu Kolben –

Verwandte Themen