Estoy haciendo una solicitud POST de ajax a matraz de python como se muestra a continuación.
function humval(val1,val2){ var dict = {"url":$('#url'+val1).val(),"status":val2}; $.ajax({ url: '/testroutez', contentType: 'application/json;charset=UTF-8', data : JSON.stringify(dict), type: 'POST', success: function(response){ alert('success'); console.log(response); }, error: function(error){ alert('error occured'); console.log(error); } }); }El código html maneja el formato jinja
<tbody> {% for value in myData %} <tr> <td class="urlTd"> <input class="form-check-input" type="checkbox" value="" id="flexCheckDefault"> {{ value["url"] }} </td> <td>{{ value["org"] }}</td> <td>{{ value["val_date"] }}</td> <td> <input type="hidden" value="{{value['url']}}" id='url{{ loop.index }}'> <input type="button" onclick="humval('{{ loop.index }}','valid')" type="button" class="far fa-check-circle hButton" id="hvalid"> <input type="button" onclick="humval('{{ loop.index }}','invalid')" type="button" class="fas fa-times-circle hButton" id="hinvalid"> </td> </tr> {% endfor %} </tbody>el código del matraz es
@data_sources_api.route('/testroutez', methods=["POST"]) def testroutez(): if loggedin(): if request.method== 'POST': print("request received") data_json = request.get_json() result_l = MlData.objects(hum_proc='null') myData = mldatas_schema.dump(result_l) return render_template('users/validation.html', myData = myData)Lo que se intenta es volver a renderizar la plantilla con el nuevo valor myData. Pero a medida que la solicitud pasa de ajax, no funcionará y nuevamente se actualizará toda la página. Pero quiero que la tabla solo se actualice con nuevos valores. como es posible hacer eso
Jinja no admite contenido de página dinámico (esto se debe a que la plantilla se representa solo una vez cuando se carga la página), lo que significa que si sus datos cambian, debe encargarse de actualizarlos. Para hacer esto, tiene dos posibilidades, la primera es actualizar la página, la segunda es solicitar los datos actualizados del servidor y, a través de javascript, actualizar el contenido de la tabla dentro de su página html, eliminando todos los registros y llenándolo con los nuevos datos devueltos por el servidor.
Eche un vistazo al siguiente enlace: Mostrar datos transmitidos desde una vista de Flask a medida que se actualiza
location.reload() resolverá el problema de actualización
Entonces la solicitud de ajax será como a continuación
function humval(val1,val2){ var dict = {"url":$('#url'+val1).val(),"status":val2}; $.ajax({ url: '/testroutez', contentType: 'application/json;charset=UTF-8', data : JSON.stringify(dict), type: 'POST', success: function(response){ location.reload(); // alert('success'); console.log(response); }, error: function(error){ alert('error occured'); console.log(error); } }); }No estoy seguro de si este es el camino correcto. Si hay algo mejor, los estoy esperando.