В общем, покопался в core.js и в компоненте main.upload.file и, вроде, разобрался) Немного теории и примеры ниже, вдруг кому-то будет полезно.
В "BX" есть собственный метод создающий объект formData. Метод не принимает никаких параметров (нельзя передать ноду "form" и получить готовый объект), и получившийся объект мало похож на обычный объект formData.
Параметры объекта добавляются через append(name, value), как и в обычном js.
То есть, чтобы заполнить параметры объекта, можно сделать так:
Код |
---|
const formData = new FormData(myForm);
const bxFormData = new BX.ajax.FormData();
for(let [name, value] of formData)
{
bxFormData.append(name, value);
}
|
Либо вручную пробежаться по полям формы и собрать данные.
bxFormData сам определит является ли параметр файлом и подберёт куда нужно его параметры.
Далее отправляем форму. Для этого у bxFormData есть собственный метод send, который обрабатывает все параметры и отправляет через BX.ajax
Код |
---|
BX.ajax.FormData.prototype.send = function(url, callbackOk, callbackProgress, callbackError)
|
Как видно, метод принимает четыре параметра - путь к обработчику на сервере и три функции колбэка, назначение которых понятно из названия параметров.
Упрощённый вариант отправки может выглядеть так:
Код |
---|
bxFormData.send(
pathToAjaxPHP,
function(data){
console.log(data);
},
null,
function(error){
console.log(`error: ${error}`)
}
);
|
P.S. Хотелось бы более полную документацию по BX