動的な todo リストを作成しています。リストはローカル データベースからダウンロードされ、テーブルに表示されます。各 todo には送信ボタンがあり、これを押すと todo はデータベースに「完了」として登録されます。私のコードでは、これは status と呼ばれる変数を介して行われ、値 1 は実行され、値 0 は元に戻されます。
私の問題は、任意のボタンを押すことができ、すべてがうまく機能することです。新しいステータスが PHP スクリプトに送信され、データベース内のステータス値が変更されます。次に、Web ページは表示テーブルを自動的に更新します。しかし、もう一度試してみると、他のボタンのいずれかで機能しません。他のボタンを機能させるには、Web ページをリロードする必要があります。
これが私のJquery/AJAXコードです:
$(document).ready( function() {
$('#todo_display_table input[type="submit"]').click(function(evt) {
evt.preventDefault();
var todo_id = $(this).val();
//document.write(todo_id);//debug
$.when(changeTodoStatusTo(1, todo_id)).then(updateTodoDisplay);
});
});
function updateTodoDisplay() {
$.post("./daily_todo_display.php", null, replaceTbodyHTML);
}
function replaceTbodyHTML(data) {
$('#todo_display_table tbody').html(data);
}
function changeTodoStatusTo(newStatus, todo_id) {
//Send til phpscript som lagrer ny status i databasen
var parameters = {
todo_id: todo_id,
newStatus: newStatus
};
return $.post("./daily_todo_change_todo_status.php", parameters); //, printDebugInfo);
}
PHP スクリプトも投稿できますが、これらを個別にテストしたところ、動作するようです。繰り返しますが、私のページのすべての機能は問題なく動作しますが、1 回クリックすると機能が停止するようです。
データベースを確認しましたが、ステータス値は最初の試行時 (いずれかのボタンの最初のクリック) でのみ更新されます。これは、問題が click() 関数または changeTodoStatusTo() 関数のいずれかにあることを示しています。ご不明な点がございましたら、お気軽にお問い合わせください =)