UPD:
Я решил свою проблему. Как оказалось данные в FormData формировались верно и отправлялись на сервер как надо. Однако свою роль сыграла проблема FormIt, с которой часто встречаются люди, заставляя работать несколько форм с FormIt на странице. Чтобы создать несколько форм, в вызов сниппета необходимо поместить параметр submitVar, а в отправляемых данных сформировать значение этого параметра в виде submitParam=submitParam. В скрипте выше этот фрагмент отмечен комментарием #bug solution for "submitVar param of FormIt".
По итогу я сормировал данные в FormData, вложив туда по аналогии одинаковые ключ-значение submit-кнопки. Вышло как-то так:
thisClassMod = thisActiveSubmitter.attr 'name'
formData = new FormData()
$.fn.serializefiles = (formData)->
obj = $ this
$.each $(obj).find("input[type='file']"), (i, tag) ->
$.each $(tag)[0].files, (i, file) ->
console.log tag.name, file
formData.append tag.name, file
return formData
params = $(obj).serializeArray();
submitName = {
name: thisClassMod
value: thisClassMod
}
params.push submitName
console.log params
$.each params, (i, val) ->
console.log val.name, val.value
formData.append val.name, val.value
return formData
return formData;
formData = thisMod.serializefiles(formData)
В будущем я обновлю описание и оставлю ссылку на github с описанием применения модуля. Я нахожу его куда более лёгким и универсальным, чем ajaxForm Наумкина по трём причинам:
1) Скрипт можно подружить не только с FormIt
2) Он написан более чисто и хорошо масштабируется (например, вся валидация вынесена в отдельный свитчер и опирается на data-type в полях, а не на данные в вызове сниппета, что в свою очередь требует от сервера лишнего req-res)
3) Скрипт написан только на jquery и не требует form.jquery.js и jgrowl - в .done -> и .fail -> можно вызвать любую модалку, которую хочется вызвать. Лично я написал свои, поскольку, опять же, плагины на js генерят динамические модалки, лишний раз нагружая браузер рендером разметки.