在一个数组中合并多个ajax响应

时间:2018-10-12 18:58:25

标签: jquery ajax response

我已经在一个网站上实现了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输出(不要介意与它们无关的红色错误):

enter image description here

1 个答案:

答案 0 :(得分:0)

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

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);
  }
});