Javascript 多维数组未被过帐

Javascript 多维数组未被过帐,javascript,jquery,arrays,multidimensional-array,Javascript,Jquery,Arrays,Multidimensional Array,我正在构建一个多维数组,并试图通过ajax将其与其他数据位一起发送 以下是如何创建我的阵列: var filelist = new Array; $(this).find('input[name=filename]').each(function(index) { var fileinfo = new Array; fileinfo['src'] = $(this).data('src'); fileinfo['name'

我正在构建一个多维数组,并试图通过ajax将其与其他数据位一起发送

以下是如何创建我的阵列:

var filelist = new Array;

    $(this).find('input[name=filename]').each(function(index) {
        var fileinfo = new Array;
        fileinfo['src'] = $(this).data('src');        
        fileinfo['name'] = $(this).val(); 
        filelist.push(fileinfo);
    });
如果我将其回传到控制台,它看起来是正确的

然后AJAX调用:

$.ajax({
        type: 'post',
        url: 'my_url_here',
        data: { id: id, files: filelist },
    })
使用Chrome Inspector,我可以看到表单数据部分传递的ID,但文件数组没有


提供了什么?

如果您在代码中添加更多的上下文及其范围,可能会有所帮助

使用
filelist
的方式不是数组。为什么不使用传统对象

var filelist = [];

 $(this).find('input[name=filename]').each(function(index) {
     var fileinfo = {};
     fileinfo.src = $(this).data('src');        
     fileinfo.name = $(this).val(); 
     filelist.push(fileinfo);
 });
您可以看到它在这里工作:

但是,它不能按预期工作的原因是,您只是在数组上设置了
src
name
属性。当jQuery将数组转换为字符串时,它将只是一个空数组,因为实际上没有向它添加任何内容

var anArray = [];
anArray['foo'] = 'bar';
anArray['bar'] = 'foo';


console.log(anArray.length); // == 0 due to array abuse
console.log(JSON.stringify(anArray)); // returns [] because JSON.stringify is doing for(i<anArray.length) which is 0
var anArray=[];
anArray['foo']='bar';
anArray['bar']='foo';
console.log(anArray.length);//=0由于数组滥用

console.log(JSON.stringify(anArray));//返回[],因为JSON.stringify正在为(iJSON)执行此操作是一种优雅的方式:

e、 g

(
[1] =>阵列
(
[产品id]=>1
[产品型号]=>HFJ5G1.5
[产品类型]=>平台
[产品返回]=>GravityITS

    )

[2] => Array
    (
        [product_id] => 2
        [product_model] => HHJ5S2.5
        [product_type] => holle plunjer
        [product_return] => veer       

    )
);
可以使用

json_encode($array);
json将如下所示:

{"1":{"product_id":"1","product_model":"HFJ5G1.5","product_type":"plat","product_return":"graviteits"},"2":{"product_id":"2","product_model":"HHJ5S2.5","product_type":"holle plunjer","product_return":"veer"}}

Json使在服务器端发布和处理发布的数据变得更加容易。

文件列表在什么范围内?发布更完整的代码不确定这是否有区别,但为什么
fileinfo
是一个数组而不是一个对象?我用PHP获取数据(确切地说是CodeIgniter)。我将尝试将filelist作为对象,但这能解决问题吗?你确定
。每个
都发生在ajax调用之前吗?这是可行的,但为什么?为什么数组不起作用,为什么包含数组的对象失败了?只有一个对象数组起作用……非常奇怪!这可能解释了这一点:。基本上,因为你没有实际推任何数组由于数组的长度没有更新,因此JSON.stringify返回一个空数组。
{"1":{"product_id":"1","product_model":"HFJ5G1.5","product_type":"plat","product_return":"graviteits"},"2":{"product_id":"2","product_model":"HHJ5S2.5","product_type":"holle plunjer","product_return":"veer"}}