计数ajax/json响应中的元素



这非常简单,以前也被问过很多次,但我不知道该由谁来做。我有两个下拉列表,最后一个是从第一个下拉列表中选择的。这是可行的,但现在我想为第二个下拉列表进行预选,因为响应中只有一个元素。

功能:

$( "select[name='r53b']" ).change(function () {
var r53bID = $(this).val();
if(r53bID) {
$.ajax({
url: "/overfladeajax.php",
dataType: 'Json',
data: {'id':r53bID},
success: function(data) {
$('select[name="r53c"]').empty();
$('select[name="r53c"]').append('<option value="">Vælg Lagtykkelse</option>');
$.each(data, function(key, value) {
$('select[name="r53c"]').append('<option value="'+ key +'">'+ value +'</option>');
});
}
});
}
});

2种回复:

{"7":"2 x 100 u03bcm HS 150 (totalt 200 u03bcm tu00f8rfilm)","8":"1 x 40 u03bcm zink primer + 1 x 120 u03bcm HS 150 (totalt 160 u03bcm tu00f8rfilm)"}

{"2":"1 x 80 u03bcm HS 150"}

我如何进行追加,这样它也会选择只有一个可用的选项?

您可以使用Object.keys(yourjson).length来获取json对象中键的长度,然后如果计数为1,则将selected添加到该选项中。

演示代码 :

var data = {
"2":"1 x 80 u03bcm HS 150"
}
var count = Object.keys(data).length//get key length
console.log("length is "+count)
$('select[name="r53c"]').append('<option value="">Vælg Lagtykkelse</option>');
$.each(data, function(key, value) {
//if length is 1
if (count == 1) {
$('select[name="r53c"]').append('<option selected value="' + key + '">' + value + '</option>');
} else {
$('select[name="r53c"]').append('<option  value="' + key + '">' + value + '</option>');
}
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<select name="r53c">
</select>

最新更新