将多个 ajax 响应合并到一个数组中

Merge multiple ajax responses in one array

我已经在一个网站上实现了 dropzone.js。当我在 div 中放置多个文件时,dropzone.js 一次发送一个请求,这有利于 php 性能和文件上传限制。

然而,它的缺点是我无法弄清楚如何捕获所有响应并将它们合并到一个数组中。在我的数组中我只能保存最后一个响应的值。

这是我的代码:

$("#dropzoneJs").dropzone({
  maxFiles: 2000,
  success: function(file, response) {
    var array = [];
    $.each(response, function() {
      $.each(this, function(k, v) {
        v = response.data.image;
        console.log(v);
        array.push(v);
      });
    });

    var array1 = JSON.stringify(array);
    $('#fdata').val(array1);
  }
});

我拖了两个不同的文件,当我将两个响应保存在一个数组中时,我只得到该数组中的最后一个响应乘以两倍。

["/images/aluguer/1.jpg","/images/aluguer/1.jpg"]

我需要的是:

["/images/aluguer/1.jpg","/images/aluguer/2.jpg"]

Console.log 输出(不要介意它们不相关的红色错误):

您需要在函数外声明数组,否则每次使用时都是从一个空数组开始。

var dropZoneArray = [];

$("#dropzoneJs").dropzone({
  maxFiles: 2000,
  success: function(file, response) {
    $.each(response, function() {
      $.each(this, function(k, v) {
        v = response.data.image;
        console.log(v);
        dropZoneArray.push(v);
      });
    });

    var array1 = JSON.stringify(dropZoneArray);
    $('#fdata').val(array1);
  }
});