繁体   English   中英

通过Ajax发送数组失败

[英]Sending array via Ajax fails

var labels = new Array();

<?php foreach($crud_data as $cd ) { ?>
  labels['<?php echo $cd['name'] ; ?>'] = '<?php echo $cd['label'] ; ?>';
<?php } ?>

$.post('url.php' , { labels:labels} );

为什么我不能像这样发送labels数组? 它没有在Firebug中显示任何内容。

我的console.log(labels)结果:

[]

avatar
"avatar"

email
"email"

id
"id"

name
"name"

password
"password"

如果我像这样填充数组

<?php foreach($crud_data as $cd ) { ?>
  labels.push('<?php echo $cd['label'] ; ?>');
<?php } ?>

$.post('url.php' , { labels:labels} );

它工作正常!

我现在明白了。 如果你有字符串键,你必须使用一个对象,而不是一个数组:

var labels = {};

JavaScript中的数组只能使用数字键来保存元素。 虽然您可以为数组分配任意属性,但它们不被视为数组的元素,因此被大多数处理数组的进程忽略。

另外,您可能需要查看jQuery.param以了解jQuery如何将输入转换为可传输字符串并相应地调整数据结构。

labels['<?php echo $cd['name'] ; ?>'] =

看起来你想创建一个关联数组,它实际上是JavaScript中的一个对象(JavaScript没有专用的关联数组)。 因此,数组本身实际上是空的,因为您要向数组对象添加属性。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM