使用JQuery创建关联数组

时间:2014-12-05 11:37:30

标签: javascript php jquery ajax post

我正在尝试使用associative array创建JQuery。我希望它填充用户从UI中选择的复选框的值。

我最初是这样创建数组的:

$contentArray = [];
$('.content-filter :checked').each(function(){
    $contentArray.push(this.value);
})

但问题在于,当我通过php将其传递给Ajax脚本时,很难从中获取值。我宁愿能够根据与之关联的密钥从数组中获取值。

所以我决定将我的代码修改为:

$contentArray = new Array(); //Hold checked "content" filters
//Content Filter - cycle through each filter and add value of checked ones to array
$('.content-filter :checked').each(function(){
    $contentArray[this.value] = this.value;
})

然而现在当我执行console.log时,我被告知我的数组内容中什么都没有。

任何人都可以告诉我如何解决这个问题并告诉我哪里出错了?

1 个答案:

答案 0 :(得分:0)

你的过滤器是错误的 - 你需要删除:checked之前的空格,否则它会在里找到一个元素选中的复选框,这显然不存在:



$contentArray = new Array(); //Hold checked "content" filters
//Content Filter - cycle through each filter and add value of checked ones to array
$('.content-filter:checked').each(function(){
    $contentArray[this.value] = this.value;
})

console.log($contentArray);

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<input type="checkbox" class="content-filter" value="1" />
<input type="checkbox" class="content-filter" value="2" checked="checked" />
<input type="checkbox" class="content-filter" value="3" checked="checked" />
<input type="checkbox" class="content-filter" value="4" />
<input type="checkbox" class="content-filter" value="5" />
&#13;
&#13;
&#13;

但是,如上所述,这只会创建一个碎片数组。如果你想要真正的关联键,你应该创建一个对象(因为我不认为这更容易在php中处理):

&#13;
&#13;
$contentObject = {}; //Hold checked "content" filters
//Content Filter - cycle through each filter and add value of checked ones to array
$('.content-filter:checked').each(function(){
    $contentObject[this.value] = this.value;
})

console.log($contentObject);
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<input type="checkbox" class="content-filter" value="1" />
<input type="checkbox" class="content-filter" value="2" checked="checked" />
<input type="checkbox" class="content-filter" value="3" checked="checked" />
<input type="checkbox" class="content-filter" value="4" />
<input type="checkbox" class="content-filter" value="5" />
&#13;
&#13;
&#13;