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} );
它工作正常!
答案 0 :(得分:3)
哦,我现在看到了。如果你有字符串键,你必须使用一个对象,而不是一个数组:
var labels = {};
JavaScript中的数组只能使用数字键来保存元素。虽然您可以为数组分配任意属性,但它们不被视为数组的元素,因此被大多数处理数组的进程忽略。
此外,您可能需要查看jQuery.param
以了解jQuery如何将输入转换为可传输字符串并相应地调整数据结构。
答案 1 :(得分:1)
labels['<?php echo $cd['name'] ; ?>'] =
似乎你想创建一个关联数组,它实际上是JavaScript中的一个对象(JavaScript没有专用的关联数组)。因此,数组本身实际上是空的,因为您要向数组对象添加属性。
答案 2 :(得分:-1)
您的阵列设置无效。你的琴弦配方不合适:
labels['<?php echo $cd['name'] ; ?>']
这样做:
labels[
// Open string
'
<?php echo $cd[
// close string
'
// Not in the string, seen as variable
name
// The rest of the string
'] ; ?>'
您需要混合使用双引号和单引号:
labels["<?php echo $cd['name'] ; ?>"] = "<?php echo $cd['label'] ; ?>";
^------------v--------------^
//Encapsulate string in double quotes