HTMLテーブルを、JSONに変換したものを、POSTで送付し、
それをFLASKで受信する処理を書いています。
なんとかHTMLテーブルを送信、FLASKでPANDASのデータフレームに入れて、
CSV保存するところまで書けました。
しかしながら、ファイルネームをFE側に埋め込んだ"upload_file"フィールドから
持ってくる必要があります。
JSONデータに埋め込むにしても、なるべくソースを修整せずに、
コードの追加のみで、やりとりできる方法はありませんでしょうか?
(別にJSONデータに埋め込んでもいいのですが、また前後で動かなくなる可能性だけは避けたいです)
すみませんが、ご教授をお願いしたく思います。
生成ボタンを押すと、HTMLテーブルに名前(*.csv)をつけたものを
バックエンド側にPOST送信をさせたい。
javascript
1 2 function loading() { 3 4 var data = $('#target').tableToJSON(); 5 6 $.ajax({ 7 type: "POST", 8 url: "/csvout", 9 contentType: 'application/json; charset=UTF-8', 10 data: JSON.stringify(data), 11 dataType: 'json', 12 success: function (data) { 13 console.log(data); 14 }, 15 error: function (error) { 16 console.log(error); 17 }, 18 }); 19 } 20
python
1@app.route('/csvout', methods=['POST']) 2def csvout(): 3 4 if request.method == 'POST': 5 df_s = pd.read_json(request.data) 6 7 filename = request.form["upload_file"] 8 df_s.csv(filename) 9 10 return render_template('edit1.html', fname=filename, csvname=csvn) 11 else: 12 return redirect('/')
自己解決いたしました。
アドバイス頂いた方法と、ほとんど同じ方法でした。
python
1$.ajax({ 2 type: "POST", 3 url: "/csvout" + document.getElementById('fname').value, 4 contentType: 'application/json; charset=UTF-8', 5 data: JSON.stringify(data), 6 dataType: 'json', 7 success: function (data) { 8 window.location.reload(true); 9 console.log(data); 10 }, 11 error: function (error) { 12 console.log(data); 13 alert("もう一度クリックしてください。"); 14 }, 15 }); 16
回答1件
あなたの回答
tips
プレビュー