Javascript 多维数组未被过帐
我正在构建一个多维数组,并试图通过ajax将其与其他数据位一起发送 以下是如何创建我的阵列: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'
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"}}