Здесь я пытаюсь создать отдельный запрос ajax для каждого загружаемого файла. У меня есть вызов ajax, который создает запись и возвращает некоторый html и tempID записи, которая используется вызовом ajax, который выполняется при успешном выполнении первого вызова. Этот процесс, кажется, работает правильно. Где возникает проблема, так это в цикле через filesList. Перед вызовами ajax цикл работает нормально, но во время вызова ajax, когда я ожидаю, что список файлов будет увеличиваться до следующего файла в массиве, он снова отправляет первый файл.
Если я выбираю только один файл, то все работает правильно. Это как если бы вызовы ajax не видели, что переменная «файл» сбрасывается в начале цикла, когда есть несколько файлов.... поставил меня в тупик...
/* Fire the ajax requests when the input files array changes
--------------------------------------------------------------------------*/
$('#theFile').on('change', function()
{
var len = this.files.length;
for(var i = 0; i < len; i++)
{
var file = this.files[i];
// console.log(file.name); This shows the correct file name
var formData = new FormData();
formData.append("file_" + i, file);
$.ajax(
{
url: '/controllerName/buildImageLoadingDIVS',
type: 'POST',
dataType:'json',
data: 'fileName=' + file.name,
success: function(data1)
{
$('#theImages').append(data1.content);
formData.append("tempID", data1.tempID);
// console.log(file.name);
// This shows the first filename in the array as if
// variable "file" was never set to new filelist
$.ajax(
{
url: '/controllerName/the_image_upload',
type: 'POST',
data: formData,
processData: false,
contentType: false,
success: function(data2)
{
$('#temp_wrapper_' + data1.tempID).html(data2);
}
});
}
});
}