2017-10-15 11 views
0

J'ai un problème, je ne peux pas ouvrir render_template après la publication de données avec ajax. C'est mon code ajax.Comment rendre le modèle après publication de données avec ajax dans FLASK?

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

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

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

et ceci est mon code serveur.

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

, je l'espère après que les données post ajax à "def evaluasiModel()", je peux ouvrir render_template "evaluasiModelKlasifikasi.html" et obtenir metodeSkoring de données à afficher dans ce modèle.

+0

Désolé, je ne sais pas python ou un flacon, mais si je comprends bien, la ligne 'render_template de retour ("evaluasiModelKlasifikasi.html", hasilSkoring = metodeSkoring) 'renvoie un code html que vous voulez afficher à un endroit de votre code html principal. Est-ce exact? –

+0

oui, c'est correct. mais je ne peux pas montrer ce code HTML. après que j'obtiens des données d'ajax –

+0

Vérifiez ma réponse. Vous ne spécifiez pas où vous voulez mettre le code html de la réponse (à l'intérieur d'un 'div', etc.). Je vous ai donné un exemple en l'ajoutant au corps –

Répondre

1

Vous devez ajouter le code html de la réponse dans la fonction de succès de l'appel ajax. Vous ne spécifiez pas où vous voulez ajouter ce code, donc ici, vous avez un exemple en ajoutant à la body de votre page ...

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

Pourquoi avez-vous besoin de cette fonctionnalité de poste? Vous pouvez simplement charger la page après avoir obtenu la valeur de l'utilisateur en utilisant la redirection.

Voici un exemple de procédure. J'ai simulé un scénario similaire. Pour que je avais besoin

  1. application.py: en tant que contrôleur de route
  2. index.html: comme modèle principal
  3. evaluasiModelKlasifikasi.html: comme modèle redirigé

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> 

Sortie:

page d'index

:

index page

après redirection:

enter image description here

Démonstration:

enter image description here

+0

merci monsieur, je vais essayer de mon code. –