如果组合框中还没有这些值,我怎么能在这个数组上运行并将值添加到组合框? (注释:在将它们添加到组合框之前已经存储了值 - 年份):
[{"id":3,"year":2015},{"id":2,"year":2014},{"id":1,"year":2013}]
编辑:这是没有检查重复的工作解决方案
function reloadPayments() {
$.get('PHPCalls.php?CallID=GetPaymentList', function(payments) {
$.each(payments, function(i,o) {
$('#paymentList')
.append($("<option></option>")
.val(obj.id)
.html(obj.year));
});
}, 'json');
}
组合框
<form id="formgroup" class="formstyle" action="*" method="POST">
<label for="paymentList"> Kies een jaartal</label>
<select id="paymentList" name="paymentList" class="txt">
<option value="-2">Selecteer...</option>
<option value="-1">Nieuw...</option>
<?php
foreach(Payment::getAll() as $payment)
{
echo '<option value="'.$payment->id.'">'.$payment->year.'</option>';
}
?>
</select>
</form>
答案 0 :(得分:1)
看起来您可能正在JSON数组上执行不必要的.each()
。我在这里设置了一个小提琴......它不是一个完美的匹配,因为它不清楚如何调用该函数并且我没有使用AJAX,但假设你的数组这是准确的,这应该有效:http://jsfiddle.net/poce6jzn/
如果我理解你要完成的任务(上面的示例应该为组合框添加3个选项 - 每年一个),你想要删除第二个.each()
循环并将obj.id
和obj.year
替换为o.id
和o.year
为了将来参考,如果您使用谷歌浏览器,可以使用各种工具来调试/可视化JSON /其他阵列。我发现特别有用的是console.dir(obj),它以易于阅读的解析格式转储整个数组。
编辑:这是为了回答关于重复的评论..
您可以遍历现有选项并检查它们是否存在:
在追加声明之前,检查列表中的现有项目是否已经不存在,然后附加
duplicateFlag = false;
$('#boxWithElements option').each(function(){
if ( obj.id == this.value ) {
duplicateFlag = true;
}
});
if (duplicateFlag === false) {
$('#paymentList')
.append($("<option></option>")
.val(obj.id)
.html(obj.year));
}