Отправить объект FormData И дополнительный параметр через ajax
Мне удалось отправить объект FormData следующим образом:
var formData = new FormData();
formData.append('file', this.files[0]);
$.ajax({
url: urlUploadProductsFile,
type: 'POST',
data: formData,
cache: false,
contentType: false,
processData: false
}, 'json');
Теперь я хочу добавить дополнительный CustomerId
для отправки на сервер. Следующие действия не будут выполняться:
var formData = new FormData();
formData.append('file', this.files[0]);
$.ajax({
url: urlUploadProductsFile,
type: 'POST',
data: { "file": formData, "CustomerId": 2 },
cache: false,
contentType: false,
processData: false
}, 'json');
И я также пробовал следующие варианты:
data: { "file": formData, "CustomerId": 2 }, processData: true
data: JSON.stringify({ "file": formData, "CustomerId": 2 })
data: { "file": JSON.stringify(formData), "CustomerId": 2 }
data: { file: formData, CustomerId: 2 }
Любая помощь была оценена.
Ответы
Ответ 1
Попробуйте:
var formData = new FormData();
formData.append('file', this.files[0]);
formData.append('CustomerId', 2);
/*
note:: appending in form Data will give "csrf token mismatch error".
so better you make a input feild of type hidden with name = CustomerId
and value = 2
*/
$.ajax({
url: urlUploadProductsFile,
type: 'POST',
data: formData,
cache: false,
contentType: false,
processData: false
}, 'json');
Ответ 2
Вам нужно либо добавить его непосредственно в formData
(как и при использовании 'file'
), либо использовать параметры запроса (GET).