Quiero mostrar el código SQL devuelto por varios parámetros de entrada como Modal. Tengo problemas para que la solicitud POST hecha desde las entradas aparezca en el Modal al presionar el botón Enviar. He estado leyendo que este tipo de proceso generalmente involucra a Ajax, pero ¿cómo obtengo ajax para obtener los datos POST del matraz?
rutas.py :
if request.method == "POST": submit_button = request.form["submit_button"] if submit_button == "View Data": DO SOMETHING elif submit_button == "View Code": sql_code = <class to get sql code> return render_template("home.html", sql_string=sql_code) return render_template( "home.html", )casa.html:
<form action="/" method="POST" onsubmit="openModal()" id="userinputForm"> <div class="filters"> <!-- Input fields --> ... INPUTS FIELDS GO HERE <!-- Submit Button --> <input class="btn btn-dark" type="submit" name="submit_button" value="View Code"> <!-- Modal --> <div class="modal fade" id="sqlModal_submit" tabindex="-1" role="dialog" aria-labelledby="sqlModallLabel" aria-hidden="true"> <div class="modal-dialog modal-lg"> <div class="modal-content"> <div class="modal-header"> <h4 class="modal-title">SQL Code</h4> <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button> </div> <div class="modal-body"> <p>{{ sql_string }}</p> </div> <div class="modal-footer"> <button type="button" class="btn btn-default" data-dismiss="modal">Close</button> </div> </div> </div> </div> <script> $('#userinputForm').on('submit', function(e){ $('#sqlModal_submit').modal('show'); e.preventDefault(); }); </script> </div> </form>En lugar de return render_template() que le dice al matraz que display una plantilla, debe devolver datos json.
Puedes probar
output= {"sql_string": sql_code} return app.response_class(json.dumps(output), content_type="application/json")o puedes hacer
output= {"sql_string": sql_code} return jsonify(output)Luego, debe 'atrapar' los datos devueltos en su código javascript (el que envió el formulario). Vea esta respuesta de stackoverflow para una muestra