2017-10-15 5 views
0

Ich habe ein Problem, ich kann render_template nicht nach Post-Daten mit Ajax öffnen. Das ist mein Ajax-Code.Wie render Vorlage nach Post-Daten mit Ajax in FLASK?

if ($(this).attr("value") == "button-three") { 

    var skoring = getRadioVal(document.getElementById('mentodeNegasi'),'negasi') 

    $.ajax({ 
     data: { metodeSkoring: skoring }, 
     type: 'POST', 
     url: '/evaluasiModel' 
    }) 
} 

und das ist mein Server-Code.

@app.route('/evaluasiModel', methods=['POST',"GET"])    
def evaluasiModel(): 
    metodeSkoring = request.form['metodeSkoring'] 
    metodeSkoring = int(metodeSkoring) 
    return render_template("evaluasiModelKlasifikasi.html", hasilSkoring = metodeSkoring) 

ich hoffe, nach Post-Daten Ajax zu "def evaluasiModel()" kann ich render_template "evaluasiModelKlasifikasi.html" öffnen und Daten metodeSkoring erhalten in dieser Vorlage zu zeigen.

+0

Sorry, ich weiß nicht, Python oder Kolben, aber wenn ich das richtig verstehen, die Linie 'return render_template ("evaluasiModelKlasifikasi.html", hasilSkoring = metodeSkoring) 'gibt einen HTML-Code zurück, den Sie an einer Stelle Ihres Haupt-HTML-Codes anzeigen möchten. Ist das korrekt? –

+0

ja, richtig. aber ich kann diesen HTML nicht zeigen. nachdem ich Daten von Ajax –

+0

bekomme, überprüfen Sie meine Antwort. Sie geben nicht an, wo Sie den HTML-Code aus der Antwort einfügen möchten (innerhalb eines 'div' usw.). Ich habe Ihnen ein Beispiel gegeben, das es dem Körper hinzufügt –

Antwort

1

Sie müssen den HTML-Code aus der Antwort in der Erfolgsfunktion des Ajax-Aufrufs hinzufügen. Sie nicht angeben, wo Sie diesen Code hinzufügen möchten, so dass hier ein Beispiel haben es auf die body Ihrer Seite Hinzufügen ...

if ($(this).attr("value") == "button-three") { 

    var skoring = getRadioVal(document.getElementById('mentodeNegasi'),'negasi') 

    $.ajax({ 
     type: 'POST', 
     url: '/evaluasiModel' 
     data: { metodeSkoring: skoring }, 
     dataType: 'html' 
     success: function(response) { 
      $('body').append(response); 
     } 
    }) 
} 
2

Warum Sie diese Post-Funktionalität benötigen Sie? Sie können die Seite einfach laden, nachdem Sie den Wert vom Benutzer mithilfe der Weiterleitung erhalten haben.

Hier ist ein Beispiel wie das geht. Ich habe ein ähnliches Szenario simuliert. Dafür brauchte ich

  1. application.py: als Wegcontroller
  2. index.html: als Hauptvorlage
  3. evaluasiModelKlasifikasi.html: als umgeleitet Vorlage

application.py:

import json 
from flask import Flask, render_template 

app = Flask(__name__) 

@app.route('/') 
@app.route('/index') 
def show_index(): 
    return render_template("index.html") 

@app.route('/evaluasiModel/<metodeSkoring>')    
def evaluasiModel(metodeSkoring): 
     return render_template("evaluasiModelKlasifikasi.html", hasilSkoring = metodeSkoring) 

if __name__ == '__main__': 
    app.run(debug=True) 

index.html:

<!DOCTYPE html> 
<html> 
<head> 
    <title>Index</title> 
    <script 
    src="https://code.jquery.com/jquery-3.2.1.min.js" integrity="sha256-hwg4gsxgFZhOsEEamdOYGBf13FyQuiTwlAQgxVSNgt4=" crossorigin="anonymous"></script> 
</head> 
<body> 
    <div id="container"> 
     <input type="text" id="mentodeNegasi" /> 
     <button id="get_button">Get score</button> 
    </div> 
    <script type="text/javascript"> 
     $(document).ready(function(){ 
      $("#get_button").on("click",function(){ 
       var skoring = $("#mentodeNegasi").val(); 
       window.location.href = '/evaluasiModel/'+skoring;       
      }) 
     }) 
    </script> 
</body> 
</html> 

evaluasiModelKlasifikasi.html

<!DOCTYPE html> 
<html> 
<head> 
    <title>evaluasiModel</title> 
</head> 
<body> 
    <div id="container"> 
     <div id="result"> 
      hasilSkoring: {{ hasilSkoring }}   
     </div> 
    </div> 
</body> 
</html> 

Ausgang:

Indexseite:

index page

nach Umleitung:

enter image description here

Demonstration:

enter image description here

+0

danke Herr, ich werde versuchen, meinen Code. –