Web ページで動的な todo リストを作成しています。このページには、todo を登録するためのフォームと、登録されたすべての todo を表示するテーブルがあります。やりたいことをフォームに登録し、送信ボタンを押すと、todo-list-table が、登録された最新の todo で自動的に更新されます。私のスクリプトは、登録された最新の todo を自動的に更新することを除いて、これらすべてを管理します。これが私のコードです:
$(document).ready( function() {
$('#todo_registration input[type="submit"]').click(function(evt){
evt.preventDefault();
var todo = $('#todo_registration input[name="daily_todo"]').val();
$('#todo_registration input[name="daily_todo"]').val(null);
$.when( registerTodo(todo) )
.then (
updateTodoDisplay()
);
});
});
function updateTodoDisplay() {
$.post("./daily_todo_display.php", null, replaceTbodyHTML);
}
function replaceTbodyHTML(data) {
$('#todo_display_table tbody').html(data);
}
function registerTodo(todo) {
var parameters = {
daily_todo: todo,
registration_button: 'clicked'
};
$.post("./daily_todo_registration.php", parameters); //, printRegistrationStatus);
}
スクリプトが todo をデータベースに正常に登録することを確認しました。更新された todo リストを取得する php-script も機能します。私の問題は、 updateTodoDisplay() 関数が、 registerTodo() の AJAX 呼び出しが正常に完了するのを待たずに実行されることだと思います。しかし、 #.when() を使用すると updateTodoDisplay() が待機するはずだと思いました。
AJAX 呼び出しを同期化すると、おそらく問題が解決することはわかっていますが、私の意見では、それは悪い解決策です。私は、この唯一無二の関数が AJAX 呼び出しが完了するまで待機することだけを望んでいます。したがって、これらの呼び出しが行われている間、Web ページの残りの部分が機能するようにします。
誰でも私の問題の修正を知っていますか? サンクス。