2014-03-05 27 views
0

我正在构造一个多维数组并试图通过ajax与其他位数据发送它。多维数组未被POST POST

这里是我的阵列是如何创建的:

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检查器,我可以看到沿着在表格数据部分传递的ID,但文件数组不是。

什么给?

+2

filelist在什么范围?发布更完整的代码 – Rooster

+1

不知道它是否有所作为,但为什么'fileinfo'是数组而不是对象? – Barmar

+0

嗯,我正在拿起PHP中的数据(CodeIgniter是精确的)。我会尝试filelist作为一个对象,但是这会解决问题吗? –

回答

1

如果您向代码和周围的代码添加更多上下文,它可能会有所帮助。

你使用的方式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); 
}); 

你可以看到它在这里工作: http://jsfiddle.net/TwoToneBytes/hMs3y/

但预期它不工作的原因是由于事实,你只需设置阵列上的srcname性能。当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 
+0

这工作,但为什么?为什么没有数组工作,为什么包含数组的对象失败?只有一些对象工作...很奇怪! –

+0

这可能解释它:http://jsfiddle.net/TwoToneBytes/K2pXw/1/。基本上,因为你实际上没有推动任何东西到数组它的长度不会更新。所以JSON.stringify返回一个空数组。 –

-1

JSON是优雅的方式做这类的事情:使用

e.g

Array 

( [1] => Array ( [product_id] => 1 [product_model] => HFJ5G1.5 [product_type] => plat [product_return] => graviteits

) 

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

    ) 
); 

这可以被编码为JSON

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使生活更轻松发布和处理在服务器端发布的数据。