Estoy tratando de enviar dos datos: un formulario y una matriz a través de AJAX a un punto final de Flask. Mi javascript con solo enviar el formulario está aquí:
$(document).on('click', '#submit_button', function(){ let form_data = $('#form').serialize(); let other_data = updateOtherData(); req = $.ajax({ url : url_final, type : 'POST', data : form_data }); req.done(function(data){ //does some updates to page here }); });Y en el punto final de mi matraz, esto funciona bien haciendo algo como:
@app.route('/process_form', methods=['GET', 'POST']) def process_form(): form = MyForm() if request.method == 'POST' and form.validate_on_submit(): #do something here return some_data_back Sin embargo, me gustaría enviar other_data junto con form_data . Así que he intentado:
$(document).on('click', '#submit_button', function(){ let form_data = $('#form').serialize(); let other_data = updateOtherData(); req = $.ajax({ url : url_final, type : 'POST', data : {'form': form_data, 'other': JSON.stringify(other_data)} }); req.done(function(data){ //does some updates to page here }); });Y actualicé mi punto final a algo como:
@app.route('/process_form', methods=['GET', 'POST']) def process_form(): form = MyForm() if request.method == 'POST': form = #Turn this back to a FlaskForm object other_data = #Just get this as a string if request.method == 'POST' and form.validate_on_submit(): #do something here return some_data_backHe intentado muchas partes diferentes en lo anterior donde no puedo hacer que funcione. Probé request.form, request.data y request.get_json (en el que configuré contentType en la llamada ajax).
He analizado muchas preguntas similares, como: Obtener los datos recibidos en una solicitud de Flask y Obtener el cuerpo POST sin procesar en Python Flask, independientemente del encabezado de tipo de contenido que parecía muy prometedor, pero todo parecía vacío.
Simplemente puede usar 'request.json'
@app.route('/process_form', methods=['GET', 'POST']) def process_form(): form = MyForm() if request.method == 'POST': content = request.json form = content['form'] other_data = content['other'] if request.method == 'POST' and form.validate_on_submit(): #do something here return some_data_back