jQuery - 来自多个来源的数组

问题描述:

我无法弄清楚如何从多个来源创建JSON对象。 我的意思是,多个字段和下拉菜单,一个输入多个文件,每个文件下面一个下拉大小,第二个数量和另一个纸张类型。jQuery - 来自多个来源的数组

我需要把所有这些信息,每个文件的对象是这样的:

{ 
    "files": [ 
    {"file_name" : "file1", "size" : "10x10", "quantity" : 1, "paper" : "glossy"}, 
    {"file_name" : "file2", "size" : "10x10", "quantity" : 4, "paper" : "glossy"}, 
    {"file_name" : "file3", "size" : "20x30", "quantity" : 3, "paper" : "glossy"}, 
    {"file_name" : "file4", "size" : "30x40", "quantity" : 6, "paper" : "glossy"}, 
    {"file_name" : "file5", "size" : "20x30", "quantity" : 2, "paper" : "glossy"}, 
    ] 
} 

我有一些代码,但它不工作,因为两个不同的阵列。我试图在一个数组中推送数据,但结果对象的结构是错误的。

function addToPhotoArray() { 
     PhotoArray = []; 
     var items = $('input[name*=files]')[0].files; 
     var filesLength = $('input[name*=files]')[0].files.length; 
     if (filesLength > 0) { 
      for (var i = 0; i < filesLength; i++) { 
       var fileName = items[i].name; 
       PhotoArray.push({ name: fileName }); 
       console.log(fileName); 
      } 
     } 
    } 

    function addToCountArray() { 
     CountArray = []; 
     $('.photo_count option:selected').each(function(){ 
      CountArray.push({ photo_count: $(this).val() }); 
     }); 
    } 

谢谢!

你在找这样的事吗?

这样比较好吗?

var jsonArr = []; 
var json = "[]"; 

function createJson(){ 
    jsonArr = JSON.parse(json); 

    $(".file_container").each(function(index, container){ 
     if($(container).find("input[type='file']").val() != ''){ 
      jsonArr.push(new File(
       $(container).find("input[type='file']").val().replace(/C:\\fakepath\\/i, ''), 
       $(container).find("select#size").val(), 
       $(container).find("select#count").val(), 
       $(container).find("select#paper").val() 
      )); 
     } 
    }); 


    json = JSON.stringify(jsonArr); 
} 

function File(file_name, size, quantity, paper){ //class 
     this.file_name = file_name; 
    this.size = size; 
    this.quantity = quantity; 
    this.paper = paper; 
} 
+0

不完全是,或者我没有完全理解你的代码。我试图在JSFiddle中使用此代码,并且数量仍然为0;但这不是主要问题。我试图理解,如何用文件容器中的数据填充这个JSON对象(最初是空的)。这是一个例子小提琴[链接](https://jsfiddle.net/cheslavcc/x8fmfefe/) – Cheslav

+0

是的,确切!谢谢! – Cheslav