1
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} );

它工作正常!

4

2 回答 2

3

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

var labels = {};

JavaScript 中的数组应该只包含带有数字键的元素。虽然您可以为数组分配任意属性,但它们不被视为数组的元素,因此被大多数处理数组的进程忽略。

此外,您可能想看看jQuery.paramjQuery 如何将输入转换为可传输的字符串并相应地调整您的数据结构。

于 2013-04-29T11:16:20.943 回答
1
labels['<?php echo $cd['name'] ; ?>'] =

It seems you want to create an associative array, which is in fact an object in JavaScript (JavaScript has no dedicated associative arrays). So the array itself is in fact empty because you are adding properties to the array object.

于 2013-04-29T11:17:28.947 回答