首页 > 解决方案 > 计算 ajax/json 响应中的元素

问题描述

这非常简单,之前已经被问过很多次,但它只是让我不知道该由谁来做。我有 2 个下拉菜单,其中最后一个是从第一个的选择中填充的。那行得通,但是现在我想在响应中只有一个元素时为第二个下拉菜单预选。

功能:

                    $( "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 t\u00f8rfilm)","8":"1 x 40 \u03bcm zink primer + 1 x 120 \u03bcm HS 150 (totalt 160 \u03bcm t\u00f8rfilm)"}

或者

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

如何进行附加,因此它还会选择只有一个可用的选项?

标签: ajax

解决方案


您可以使用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>


推荐阅读