Estoy intentando PUBLICAR la matriz songFiles insertada desde la función getTableData() (dentro de la solicitud ajax) en el punto final /api/fileNames , que luego se envía a una devolución de llamada postFileNames() que debería publicar la matriz, pero simplemente no puedo. Parece que no funciona. Cualquier ayuda sería apreciada, incluidas quizás otras formas de hacer esto.
Soy un poco principiante en el uso de ajax y matraz, he buscado una solución por todas partes, pero parece que no puedo encontrar ninguna que se ajuste a mi objetivo, perdone mi falta de conocimiento.
Código JavaScript
function getTableData() { $.ajax({ method: "GET", url: "/api/getSong", dataType: "json", success: function(data) { createMusicTable(); let indexObj = Object.keys(data.song).length; for (var i = 0; i < indexObj; i++) { var song = data.song[i] var id = data.song[i].song_id; var fileName = data.song[i].song_file + ".mp3"; songFiles.push(fileName); appendMusic(song, id); songTitle.id = "s" + i; console.log("td-ok"); } postFileNames(songFiles); } }); } function postFileNames(data) { $.ajax({ method: "POST", url: "/api/fileNames", dataType: "json", // data is an array, so not sure what to put here. data: data, // not sure if correct success: function(data) { // should: post the data into the endpoint. // data is not logged, goes straight to error. console.log(data) }, error: function() { console.log("cry") } }) }Código de punto final FLASK
@app.route("/api/fileNames", methods=['POST', 'GET']) def fileNameStorage(): if request.method == 'POST': data = request.get_data() # not too sure what to do here either. return data else: return "error" # currently goes to 'return error'@app.route("/api/fileNames", methods=['POST', 'GET']) def fileNameStorage(): if request.method == 'POST': data = { "id": request.json["id"], "song_name": request.json["song_name"], "time_duration": request.json["time_duration"] } return data, 200 else: return "error", 400 # currently goes to 'return error'Sería más bonito si lo hicieras:
@app.route("/songs/", methods=['GET', 'POST']) def songs(): return Songs().get_songs(), 200En el archivo route.py y las demás clases y métodos en otro archivo
Tal vez pruebe jsonify(array) o json.dump(array) si es un problema mapear los elementos de la matriz.