1 回答

TA貢獻1871條經驗 獲得超8個贊
這里的問題是,您應該在提交表單時使用 AJAX。AJAX 主要是在后臺與服務器通信,但您正試圖將其用作以編程方式提交 POST 表單數據的工具。使用 AJAX 將向服務器發送請求,就像單擊鏈接或提交表單一樣,但瀏覽器不會導航到結果。這就是為什么您得出的結論是flask 跳過了render_template調用,但模板確實得到了渲染。只是通過 AJAX 調用,回復只會在 AJAX 成功回調中結束,而不是在瀏覽器的主窗口中。
對于這樣的 AJAX 請求,不需要發回 HTML。例如,您可以簡單地 return "update successful"。
您可以通過從客戶端手動重定向到結果頁面來修復現有代碼:
// in your $.ajax() options:
success: function(reply) {
if (reply == "update successful") location = "/table"; // URL of table view
else alert("server reports error");
}
在 AJAX 調用成功更新服務器上的 CSV 文件后,這將在客戶端上重定向。
但是,您可以簡單地提交實際表單:
<form id="tableDataForm" method="post" action="{{url_for('update_file')}}">
<input type="hidden" name="data" id="tableData">
</form>
$("#update").on('click', function(){
$('#tableData').val($('#my_id').table2csv()); // insert data into hidden <input>
$('#tableDataForm').submit(); // send POST request
});
這就是你所需要的?,F在瀏覽器會再次顯示flask發回的回復。
添加回答
舉報