The icon should change same time as I click on "done", then you can send a async ajax request to change it on the server. Otherwise waiting for the server takes 1-2 seconds which makes the UI feel really slow.
Btw. the same with creating new items, you shouldn't reload the whole page, just put the new task in with JavaScript and asynchronously send it back to the server.