1. Вы просто изменяете значение переменной где-то в теле цикла обратно на ноль.
2. Вы используете defered, setTimeout либо другие приемы по распределению потока выполнений. Что приводит к срабатыванию лога быстрее, чем выполнится обработка тела цикла.
getElementsByTagName возвращает объект HTMLCollection у которого нету метода push. А когда вы присвоили переменной [] - это уже массив, у которого есть метод push.
Если хотите выполнить push к HTMLCollection, то делайте это так: Array.prototype.push.call(arrayA, 'dddd');
1) В консоли утверждается, что вы пытаетесь подключить Dropzone туда, где он уже подключен.
2) Иногда бывает, что ошибка возникает при парсинге самого JSON-ответа. Например у вас в строке в JSON есть взаимоисключащие " или '.
Попробуйте с сервера вернуть другой JSON-ответ попроще и посмотреть, распарсит ли он. Если да, значит ошибка не в JS-коде, а в JSON-ответе.