Проблема здесь:
ajax.runAJAX();
document.getElementById('list').innerHTML = ajax.response;
Вы присваиваете innerHTML'у ответ от сервера в тот момент, когда он еще выполняется (если конечно, как сказал vk65535, запрос не синхронный), при повторном вызове результат берется из кэша, поэтому все срабатывает.
В используемой вами библиотеке должен быть способ задать callback-функцию, которая сработает после того, как AJAX-запрос выполнится.