Ошибка заключается в том, что вы не учли, что метод update(), который вызывается в setInterval, является асинхронным. То есть сначала формируется и отправляется запрос на сервер, затем честно отрабатывает строка $("div #purchase input:checkbox").prop("checked", "true"), а затем приходит ответ от сервера и обновляется html блока. Рекомендую изучить основы асинхронного программирования и объект Deferred в jQuery.